我正在使用SQL Server。 我有表,在不同的任務時間價值和天從1到7,像這樣(表TaskHours):SQL Server - 無法選擇Sum> 0的行0
| TaskID | Hours1 | Hours2 | Hours3 | Hours4 | Hours5 | Hours6 | Hours7 |
| 1 | NULL | 10 | NULL | NULL | NULL | NULL | NULL |
| 2 | NULL | NULL | 0 | NULL | NULL | NULL | NULL |
| 3 | 0 | NULL | 0 | NULL | 0 | 0 | NULL |
| 4 | 3 | 3 | 0 | 3 | NULL | NULL | 3 |
| 5 | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
我只需要計算時間的總和爲每個的TaskID,只有有選擇那些在他們的小時的總和> 0 但是,當我嘗試寫:
SELECT TaskID, Hours1, Hours2, Hours3, Hours4, Hours5, Hours6, Hours7,
SUM(ISNULL(Hours1, 0) + ISNULL(Hours2, 0) + ISNULL(Hours3, 0) + ISNULL(Hours4, 0)
+ ISNULL(Hours5, 0) + ISNULL(Hours6, 0) + ISNULL(Hours7, 0)) AS TotalHours
FROM TaskHours
WHERE TotalHours > 0
然後我得到的錯誤:
Invalid column name 'TotalHours'.
什麼我做錯了,以及如何修理它?
這是SQL Server [邏輯處理順序](https://destinationdata.wordpress.com/2016/01/10/the-logical-processing-order-3/)的結果。 TL/DR:select子句中的別名僅適用於order by。交叉應用和子查詢可以解決這個問題。 –