簡體   English   中英

計算同一行中的多個字段-SQL

[英]Count Multiple Fields same Row - SQL

我有一個問題,關於對同一張表的同一行中的多個字段進行計數。 顯示我需要的最簡單方法是提供一個示例。 我有report_numberwriter1loc1writer2loc2列。 您可以調用我的表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.

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