2016-11-16 25 views
0

我使用這個查詢使用SELECT作爲列

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 

似乎它返回所有userlogs ...

回答

2

使用條件彙總:

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時評估爲真。但是,以上更簡單。

+0

謝謝先生... – user6689924

相關問題