您不能在SQL Server中的列别名组 - 你需要一群以表达:
Select Hours, LastName, FirstName, UUID,
Case
When DatePart(WeekDay, Date) = 1 Then
Date - 6
Else
Date - DatePart(Weekday, Date) + 2
End as [Week]
From Entry
Where Date between '06/30/2014' and '10/31/2014'
GROUP BY
Case
When DatePart(WeekDay, Date) = 1 Then
Date - 6
Else
Date - DatePart(Weekday, Date) + 2
End
虽然你可以使用子查询使它有点清洁:
SELECT * FROM
(
Select Hours, LastName, FirstName, UUID,
Case
When DatePart(WeekDay, Date) = 1 Then
Date - 6
Else
Date - DatePart(Weekday, Date) + 2
End as [Week]
From Entry
Where Date between '06/30/2014' and '10/31/2014'
)
GROUP BY [Week]
但是在任何情况下,您都需要决定如何在组表达式中集合而不是的值。 Hours
有意义做一笔款项,但您如何汇总名称和ID?如果没有聚集是必要的只是让他们出来的结果:
SELECT Week, SUM(Hours) FROM
(
Select Hours, LastName, FirstName, UUID,
Case
When DatePart(WeekDay, Date) = 1 Then
Date - 6
Else
Date - DatePart(Weekday, Date) + 2
End as [Week]
From Entry
Where Date between '06/30/2014' and '10/31/2014'
)
GROUP BY [Week]
简单用了别名 – 2014-10-31 17:18:06
添加组相同的代码我做到这一点,得到了,因为它不是在聚合函数或包含在此“列Entry.Hours'在选择列表中无效GROUP BY子句“。 – 2014-10-31 17:20:36
如果不包含组中的其他列,则需要对它们进行汇总(即SUM,MAX,MIN等) – DavidG 2014-10-31 17:21:58