Bus*_*nta 3 sql sql-server sql-server-2008
在提示这是重复的问题之前,请注意问题标题中的“无联合”。
出于演示目的:
我有一个很大的SQL,它根据几个条件对结果进行分组。用户类型,用户来源,登录尝试
例如
SELECT
...
GROUP BY
UserType, UserOrigin, LoginAttempts
Run Code Online (Sandbox Code Playgroud)
我已经能够按UserType和将结果分组UserOrigin。
所以我的结果看起来像这样。
User: Admin Origin: US
User: Admin Origin: CND
User: Editor Origin: US
User: Editor Origin: UK
User: Editor Origin: MX
etc...
Run Code Online (Sandbox Code Playgroud)
我还尝试按登录尝试次数将结果分组,但仅基于该值是否为null进行分组。
我真的不需要多少时间的信息,但是否尝试失败了。
换句话说,我仅根据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
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙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
;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |