Lyd*_*lph 7 sql t-sql sql-server
我是SQL的新手.
我想使用GROUP BY一个CASE声明,如果@myboolean是真的,以特定的方式对结果进行分组.
我已经看过很多关于如何使用GROUP BY和CASE BY使用单个字段的示例,或者如何在GROUP BY没有CASE语句的情况下使用多个字段.
我不知道如何将两者结合起来.当我GROUP BY在CASE语句中包含字段时,我收到语法错误:
','附近的语法不正确
所以,这有效:
GROUP BY
/* This works with no enclosing CASE statement */
field1,
field2,
field3,
field4
Run Code Online (Sandbox Code Playgroud)
这会产生语法错误:
GROUP BY
CASE WHEN (@myboolean=1)
THEN
field1, <-- ERROR HERE: Incorrect syntax near ','
field2,
field3,
field4
ELSE
field1
END
Run Code Online (Sandbox Code Playgroud)
我已经看过这些问题:
SQL:Group By with Case语句用于多个字段:似乎是一个GROUP BY/或基于CASE,而不是按多个分组.无论如何都不涉及逗号.
按多列和案例陈述分组:也许我很厚,但我看不出这是如何包含该GROUP BY条款中的案例陈述
各种其他,不太相关
我正在使用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
Run Code Online (Sandbox Code Playgroud)
如果@myboolean不是1,那么评估NULL结果不会影响结果.
如果它在存储过程中,您也可以使用IF.