[英]Exclude SUM From Results if it Equals 0
我有以下數據結構:
問題表
QuestionID | Question | Error
1 Who? 1
2 What? 0
3 When? 1
4 Who? 1
QuestionID是一個int,Question是一個varchar,Error是一個位字段。
用戶統計表
User | QuestionID
Mary 1
Joe 2
Mary 3
Mary 1
用戶是varchar,QuestionID是int。
我正在嘗試設計兩個查詢。
在第一個查詢中,我試圖按問題分組,然后說誰? 已被回答兩次錯誤,何時? 回答一次錯誤,不報告任何原因? 因為它沒有錯誤的答案。 到目前為止,這是我所擁有的,一切正常,但是不包括“什么? 結果中的問題,當前返回“ 0”並包含在結果中:
SELECT 'Question - ' +[Question] + ' - Answered Wrong ' +
CAST(SUM(CONVERT(INT, Error)) as varchar) + 'Times' As Report
FROM [Questions]
GROUP BY [Question];
在第二個查詢中,我嘗試通過QuestionID列關聯表。 本質上,試圖說瑪麗回答兩次QuestionID 1錯誤,一次QuestionID 3錯誤。 該查詢我還沒有任何東西。 此查詢期望的完整字符串類似於:
"Mary Answered Question Who? Wrong 2 Times"
"Mary Answered Question When? Wrong 1 Times"
對於喬來說,這沒什么,因為他沒有回答任何錯誤。
SQL Server 2012,我無法控制數據結構。 TIA!
您可以使用having
子句對分組后的結果進行過濾。 在查詢中最后添加此內容:
HAVING SUM(CONVERT(INT, Error)) > 0
對於第二個查詢,您將在用戶上加入表和組:
SELECT [User] + ' answered question ' + [Question] + ' wrong ' +
CAST(SUM(CONVERT(INT, Error)) as varchar) + ' times' As Report
FROM [Questions] q
INNER JOIN [User Stat] u on u.QuestionID = q.QuestionID
GROUP BY [User]
HAVING SUM(CONVERT(INT, Error)) > 0
我認為有一個HAVING
子句來說明SUM
必須大於0才有意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.