您不能在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