2012-02-15 15 views
1

同じテーブルの同じ行にある複数のフィールドのカウントに関する質問があります。私が必要とするものを示す最も簡単な方法は、例を提供することです。私は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 

私が試したとしようとした作家がに関わってきたことをレポートの数を取得するクエリを把握することはできませんしています。ライターは、ライター1またはライター2のフィールドにある場合、レポートのクレジットを取得します。私は、日付範囲とlocのクエリをベースにしたいと思います。したがって、日付範囲(この表には日付フィールドがあります)とloc#(loc1とloc2の両方の検索が含まれます)を入力すると、結果表のようなものが表示されます。

ご協力いただきありがとうございます。 SQL SSRSでこれを使用します。

答えて

1
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 
+0

はどうもありがとうございまし参照してください!私はあなたの例を使用し、それは魅力のように働いた! – user1212436

0

最も単純な方法は、

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文は、「ARENだけそれは本当に価値がある場合トン些細な

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 

working sample here

関連する問題