簡體   English   中英

SQL:GROUP BY多個帶CASE語句的列

[英]SQL: GROUP BY multiple columns with CASE statement

我是SQL的新手。

我想將GROUP BYCASE語句一起使用,如果@myboolean為true, @myboolean特定方式對結果進行分組。

我已經看到很多關於如何將GROUP BYCASE 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

我已經看過這些問題:

我正在使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM