在建议这是一个重复的问题之前,请注意问题标题中的“不合并”。
(Group by null and not null values)
出于演示目的:
我有一个非常大的SQL,它根据几个标准对结果进行分组。 UserType,UserOrigin,LoginAttempts
e.g。
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
仅将结果分组为空或非空吗?
谢谢!
答案 0 :(得分:5)
我使用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
;