一个超级简单的员工入职年限人数统计问题!
因为刚学了datediff()和datepart()的用法,所以就耍了下小聪明,建了一个订单信息表。
select datediff(year,datepart(year,入职时间),datepart(year,getdate())),count(*)
from 订单信息
group by datediff(year,datepart(year,入职时间),datepart(year,getdate()))
输出结果如下:1
1 0 8
这个结果显然不是我想要的结果。于是脑筋一转,很快就写出了下列查询语句。
select datediff(year,入职时间,getdate()),count(*)
from 订单信息
group by datediff(year,入职时间,getdate())
输出结果如下:1,2,3,4是列名,6,7,9,11是入职年限。4,2,1,1是员工个数。
1 6 4
2 7 2
3 9 1
4 11 1
显然这个结果是对的,是我想要的结果。
但是我觉得两条查询语句的作用是完全一样的啊。为什么第一个查询语言会有错误呢?查不出结果。语法上面看上去好像没有错误啊。或许这真是个无聊的问题,但是我还是希望能够向大家学习。希望大家不吝赐教!!!