[英]Count Multiple Fields same Row - SQL
我有一個問題,關於對同一張表的同一行中的多個字段進行計數。 顯示我需要的最簡單方法是提供一個示例。 我有report_number
, writer1
, loc1
, writer2
, loc2
列。 您可以調用我的表report_master。 我的桌子看起來像這樣:
Report_Number, writer1, loc1, writer2, loc2 1 123 1 456 2 2 456 2 789 3 3 789 3 123 1 4 789 3 123 1 5 456 2 789 3 6 123 1 456 2 7 123 1 789 3 8 456 2 123 1 9 789 3 123 1 10 123 1 456 2
OUTPUT:
Reports, writer 8 123 6 456 6 789
我已經嘗試了很多次,但無法弄清楚該查詢來獲取作者所涉及的報告數量。 如果作者位於writer1或writer2字段中,則該報告將獲得作者的功勞。 我想基於日期范圍和loc查詢。 因此,如果我輸入一個日期范圍(此表的確有一個日期字段)和一個loc#(包括同時搜索loc1和loc2),我將得到類似於結果表的內容。
在此先感謝您的幫助。 我將在SQL SSRS中使用它。
SELECT COUNT(*) AS Reports, q.writer
FROM (SELECT writer1 AS writer
FROM YourTable
WHERE loc1 = 1
UNION ALL
SELECT writer2 AS writer
FROM YourTable
WHERE loc2 = 1) q
GROUP BY q.writer
最直接的方法是對每個writer字段的選擇的並集進行計數
SELECT COUNT(report_number) reports,
writer
FROM (SELECT report_number,
writer1 as writer
FROM table
UNION ALL
SELECT report_number
writer2 as writer
FROM table) t
GROUP BY writer
另一個選擇是使用UNPIVOT
子句,但只有在您的UNION SELECT並非微不足道的情況下,它才真正值得
SELECT COUNT(report_number),
writer
FROM (SELECT report_number,
writer1,
writer2
FROM reports) p UNPIVOT (writer FOR writer_type IN (writer1, writer2)
)AS
unpvt
GROUP BY writer
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.