[英]SQL: GROUP BY multiple columns with CASE statement
我是SQL的新手。
我想將GROUP BY
與CASE
語句一起使用,如果@myboolean
為true, @myboolean
特定方式對結果進行分組。
我已經看到很多關於如何將GROUP BY
和CASE BY
與單個字段一起使用的示例,或者如何在沒有CASE
語句的情況下將GROUP BY
與多個字段一起使用。
我不知道如何將兩者結合起來。 當我在CASE
語句中包含GROUP BY
字段時,我收到語法錯誤:
','附近的語法不正確
所以,這有效:
GROUP BY
/* This works with no enclosing CASE statement */
field1,
field2,
field3,
field4
這會產生語法錯誤:
GROUP BY
CASE WHEN (@myboolean=1)
THEN
field1, <-- ERROR HERE: Incorrect syntax near ','
field2,
field3,
field4
ELSE
field1
END
我已經看過這些問題:
SQL:具有多個字段的Case語句的Group By :似乎是GROUP BY
或/或基於CASE
,而不是group by by multiple。 無論如何都不涉及逗號。
按多列和case語句分組 :也許我很厚,但我看不出這是如何在GROUP BY
子句中包含case語句的
各種其他,不太相關
我正在使用Microsoft SQL Server Management Studio。
請注意,我正在繼承一個非常復雜/長的SQL語句,我想避免過多地改變它。 我不想將查詢拆分為兩個單獨的SELECT
語句。
你可以用......
GROUP BY field1,
CASE WHEN @myboolean=1 THEN field2 END,
CASE WHEN @myboolean=1 THEN field3 END,
CASE WHEN @myboolean=1 THEN field4 END
如果@myboolean
不是1
,則求值為NULL
且不影響結果。
如果它在存儲過程中,您也可以使用IF
。
你可以這樣試試:
IF (@myboolean=1)
BEGIN
SELECT
field1,
field2,
field3,
field4
FROM myTable
GROUP BY
field1,
field2,
field3,
field4
END
ELSE
BEGIN
SELECT
field1
FROM myTable
GROUP BY
field1
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.