使用 SELECT 作为列
Using SELECT as column
我正在使用这个查询
SELECT
fullname,
(SELECT
count([ID]) FROM [SDT-DB].[dbo].[tbl_InfoBoard_UserLogs]
WHERE fullname = fullname AND user_did ='login') AS [Login],
(SELECT
count([ID]) FROM [SDT-DB].[dbo].[tbl_InfoBoard_UserLogs]
WHERE fullname = fullname AND user_did ='message') AS [View Messageboard],
(SELECT
count([ID]) FROM [SDT-DB].[dbo].[tbl_InfoBoard_UserLogs]
WHERE fullname = fullname AND user_did ='notification') AS [View Notification],
count([ID]) AS Count
FROM [SDT-DB].[dbo].[tbl_InfoBoard_UserLogs]
GROUP BY fullname
它似乎返回了所有用户日志...
使用条件聚合:
SELECT fullname,
SUM(CASE WHEN user_did = 'login' THEN 1 ELSE 0 END) AS [Login],
SUM(CASE WHEN user_did = 'message' AS [View Messageboard],
SUM(CASE WHEN user_did = 'notification' THEN 1 ELSE 0 END) AS [View Notification],
count([ID]) AS Count
FROM [SDT-DB].[dbo].[tbl_InfoBoard_UserLogs]
GROUP BY fullname;
你的逻辑不成立,因为你没有关联子句。您似乎 打算 与 fullname = fullname
有一个,但只要 fullname
不是 NULL
,它就会计算为真。但是,以上更简单。
我正在使用这个查询
SELECT
fullname,
(SELECT
count([ID]) FROM [SDT-DB].[dbo].[tbl_InfoBoard_UserLogs]
WHERE fullname = fullname AND user_did ='login') AS [Login],
(SELECT
count([ID]) FROM [SDT-DB].[dbo].[tbl_InfoBoard_UserLogs]
WHERE fullname = fullname AND user_did ='message') AS [View Messageboard],
(SELECT
count([ID]) FROM [SDT-DB].[dbo].[tbl_InfoBoard_UserLogs]
WHERE fullname = fullname AND user_did ='notification') AS [View Notification],
count([ID]) AS Count
FROM [SDT-DB].[dbo].[tbl_InfoBoard_UserLogs]
GROUP BY fullname
它似乎返回了所有用户日志...
使用条件聚合:
SELECT fullname,
SUM(CASE WHEN user_did = 'login' THEN 1 ELSE 0 END) AS [Login],
SUM(CASE WHEN user_did = 'message' AS [View Messageboard],
SUM(CASE WHEN user_did = 'notification' THEN 1 ELSE 0 END) AS [View Notification],
count([ID]) AS Count
FROM [SDT-DB].[dbo].[tbl_InfoBoard_UserLogs]
GROUP BY fullname;
你的逻辑不成立,因为你没有关联子句。您似乎 打算 与 fullname = fullname
有一个,但只要 fullname
不是 NULL
,它就会计算为真。但是,以上更简单。