簡體   English   中英

如果等於0,則從結果中排除SUM

[英]Exclude SUM From Results if it Equals 0

我有以下數據結構:

問題表

QuestionID  | Question  | Error
      1        Who?         1
      2        What?        0
      3        When?        1
      4        Who?        1

QuestionID是一個i​​nt,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM