症狀
請考慮以下案例:
- 您的電腦已安裝 Microsoft SQL Server 2012。
- 您的查詢在 SELECT 陳述式中包含 CASE 陳述式,以及在 GROUP BY 陳述式中包含 CASE 陳述式。
- 兩個 CASE 陳述式評估為 NULL。
- 您執行查詢。
在此案例中,您收到下列錯誤訊息:
注意
Msg 8120, Level 16, State 1, Line 3
資料行 '<column name>' 在選取清單中無效,因為它未包含在彙總函數或 GROUP BY 子句中。
例如,您可以執行下列查詢:建立資料庫測試
返
使用測試
返
建立資料表 tvt ( v1t 二進位 (1) null)
建立表 TLN (ln 數字 (5) NOT Null)
返
選取
案例
當 1=2 時 t1.col1
否則 10
end,
案例
當 T1.col1 = 2 時,則 T1.col2
end
從 (
選取 T2.v1t 做為 Col1,10 做為 Col2
來自 TVT T2
) T1
分組依據
案例
當 1=2 時 t1.col1
否則 10
end,
案例
當 T1.col1 = 2 時,則 T1.col2
end
前往 在查詢中,“when 1=2 then t1.col1 else 10” 語句評估為 10。 當您使用 NULL 取代 “10” 時,會發生這個問題。
附註:當您從 SELECT 陳述式或 GROUP BY 陳述式中移除任一 CASE 陳述式時,不會發生這個問題。
解決方式
套用修正程式之後,您必須啟用追蹤旗標,才能讓 Hotfix 正常運作。 當您需要套用此修正程式時,請與 Microsoft 支援人員聯繫。
此問題已先在下列 SQL Server 累積更新中修正。
SQL Server 2012 SP1 的累積更新 6 /zh-tw/help/2874879
關於 SQL Server 的累積更新
SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。