K09*_*K09 0 sql-server t-sql group-by
是否可以在 CASE 语句中按多个列进行分组?我收到错误“',' 附近的语法不正确。” 在下面的代码...
SELECT
CASE
WHEN Type = 'Test'
THEN Description
ELSE MAX([Description])
END AS 'Description'
GROUP BY
CASE
WHEN Type = 'Test'
THEN Description
ELSE ''
END,
Type, Account, Structure
Run Code Online (Sandbox Code Playgroud)
我想当Type
具有特定值 ( 'Test'
) 时,您希望将Structure
和Description
列考虑用于分组,否则根本不使用它们。这是执行此操作的一种方法:
GROUP BY
Type, Account,
CASE WHEN Type = 'Test' THEN Structure ELSE '' END,
CASE WHEN Type = 'Test' THEN Description ELSE '' END
Run Code Online (Sandbox Code Playgroud)
的''
应该是具有同一数据类型的(任何)常量表达式Structure
和Description
分别。
或者,您可以将这两种情况分开,这将使您更灵活地调整SELECT
列表:
SELECT
---
FROM
---
WHERE
Type = 'Test'
GROUP BY
Type, Account, Structure, Description
UNION ALL
SELECT
---
FROM
---
WHERE
(Type <> 'Test' OR Type IS NULL)
GROUP BY
Type, Account ;
Run Code Online (Sandbox Code Playgroud)