当前位置: 代码迷 >> Sql Server >> 为什么这条“Max”语句,返回的是三条记录,该怎么处理
  详细解决方案

为什么这条“Max”语句,返回的是三条记录,该怎么处理

热度:11   发布时间:2016-04-27 12:21:44.0
为什么这条“Max”语句,返回的是三条记录
(select Max(DAYear+DAMonth+DADay+DAHour+DAMinute) as AA from T_DataByTen where DataNo = 'A550101'
Group By (DAYear+DAMonth+DADay+DAHour+DAMinute),DataNo);

为什么这条“Max”语句,返回的是三条记录???

------解决方案--------------------
group by (DAYear+DAMonth+DADay+DAHour+DAMinute),DataNo

楼主有兴趣可以把这两个放到查询的字段里

select (DAYear+DAMonth+DADay+DAHour+DAMinute),DataNo,max(...) as AA from ... group by ...

然后会发现为什么会有三条,分组的条件,具体看看group by的用法。
------解决方案--------------------
可能还有秒不同吧,用下面的语句就只返回一条
(select Max(DAYear+DAMonth+DADay+DAHour+DAMinute) as AA from T_DataByTen where DataNo = 'A550101'
Group By DataNo);

------解决方案--------------------
和你的group by有关系,MAX是分组后取每个组的最大值,所以才会有多个值。
------解决方案--------------------
加上group by表示你是按这两个字段来做分组

1、既然找的是max(DAYear+DAMonth+DADay+DAHour+DAMinute),为何又要按 DAYear+DAMonth+DADay+DAHour+DAMinute 分组,这样相当于只找 distinct DAYear+DAMonth+DADay+DAHour+DAMinute 。

2、DataNo 貌似在这个查询里没有具体的意义,楼主写在group by后边不是显得多余,如果它是有用的,那么应该在select后也会存在。
------解决方案--------------------
的确,你只是求最大的日期时间就不需要分组了。。。
------解决方案--------------------
select Max(DAYear+DAMonth+DADay+DAHour+DAMinute) as AA from T_DataByTen
先这样查下试试,看是几条数据
  相关解决方案