在暗示这是一个重复的问题之前,请注意问题标题中的“without union”。
( Group by null and not null values )
为了演示目的:
我有一个相当大的 SQL,它根据几个条件对结果进行分组。 用户类型、用户来源、登录尝试
例如
SELECT
...
GROUP BY
UserType, UserOrigin, LoginAttempts
我已经能够按 UserType
和 UserOrigin
对我的结果进行分组。
所以我的结果看起来像这样。
User: Admin Origin: US
User: Admin Origin: CND
User: Editor Origin: US
User: Editor Origin: UK
User: Editor Origin: MX
etc...
我还尝试按登录尝试次数对结果进行分组,但仅基于值是否为空。
我真的不需要关于尝试次数的信息,而是尝试是否失败的信息。
换句话说,我只想根据是否有 LoginAttempts 列对结果进行分组。
这是 SQL 的预期结果。
User: Admin Origin: US Login Attempts: null
User: Admin Origin: US Login Attempts: (not null)
User: Admin Origin: CND Login Attempts: null
User: Admin Origin: CND Login Attempts: (not null)
User: Editor Origin: US Login Attempts: null
User: Editor Origin: US Login Attempts: (not null)
User: Editor Origin: UK Login Attempts: null
User: Editor Origin: UK Login Attempts: (not null)
User: Editor Origin: MX Login Attempts: null
User: Editor Origin: MX Login Attempts: (not null)
TABLE LOGINS
------------------------------
ID LoginAttempts
1 null
2 1
3 2
4 null
5 1
6 7
任何人都可以帮助GROUP BY LoginAttempt
仅按 null 或非 null 对结果进行分组吗?
谢谢!
最佳答案
我会使用CASE
:
SELECT
UserType
,UserOrigin
,CASE WHEN LoginAttempts IS NULL
THEN NULL
ELSE '(not null)' END AS LoginAttempts
FROM
...
GROUP BY
UserType
,UserOrigin
,CASE WHEN LoginAttempts IS NULL
THEN NULL
ELSE '(not null)' END
;
关于SQL Server 2008 - 在没有联合的情况下按空值和非空值分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33381844/