2013-07-04 5 views
5

私は前に質問した質問によく似た何かをしようとしていますが、正しく動作するように思えます。ここに私の前の質問です:次のようにHow to get totals per dayMSSQL 1か月間の合計

表に見えます:

   Table Name: Totals 
Date  |Program label |count 
      |    |  
2013-04-09 |Salary Day  |4364 
2013-04-09 |Monthly   |6231 
2013-04-09 |Policy   |3523 
2013-04-09 |Worst Record |1423 
2013-04-10 |Salary Day  |9872 
2013-04-10 |Monthly   |6543 
2013-04-10 |Policy   |5324 
2013-04-10 |Worst Record |5432 
2013-04-10 |Salary Day  |1245 
2013-04-10 |Monthly   |6345 
2013-04-10 |Policy   |5431 
2013-04-10 |Worst Record |5232 

私の質問は:MSSQL 2008を使用すると、 - 私は一日あたりのプログラムラベル当たりの総カウント数を取得するための方法はあります今月。あなたが時々見ることができるように、それは1日2回実行されます。私はこれを説明できる必要があります。次のように

出力になります。

Date  |Salary Day |Monthly |Policy |Worst Record 
2013-04-9 |23456  |63241 |23521 |23524 
2013-04-10|45321  |72535 |12435 |83612 

答えて

3

この

select Date, 
    sum(case when [Program label] = 'Salary Day' then count else 0 end) [Salary Day], 
    sum(case when [Program label] = 'Monthly' then count else 0 end) [Monthly], 
    sum(case when [Program label] = 'Policy' then count else 0 end) [Policy], 
    sum(case when [Program label] = 'Worst Record' then count else 0 end) [Worst Record] 
from Totals Group by [Date]; 
+0

私はそれをたくさん編集しなければならないのに、私が理解するのがもっとも簡単なので答えを使いました。ありがとう。 :) – DeanMWake

8

は次のようにPIVOT表演算子を使用します。

SELECT * 
FROM Totals AS t 
PIVOT 
(
    SUM(count) 
    FOR [Program label] IN ([Salary Day], 
          [Monthly], 
          [Policy], 
          [Worst Record]) 
) AS p; 

は、アクションでそれを参照してください。

これはあなたを与える:

|  DATE | SALARY DAY | MONTHLY | POLICY | WORST RECORD | 
------------------------------------------------------------- 
| 2013-04-09 |  4364 | 6231 | 3523 |   1423 | 
| 2013-04-10 |  11117 | 12888 | 10755 |  10664 | 
+0

感謝を試してみてください。私はこれを通して何か新しいことを学んだ:)本当に役に立つ答え。私はそれを私がまだ完全に快適ではないものとして使用することを選択していない。私は間違いなく私の将来のクエリでこれをテストし始めますが。 – DeanMWake

+0

@MethodMan - いつでも大歓迎です。私は助けてくれると嬉しいです。 –

2

はこの1つ試してみてください -

SELECT 
    date 
    , [Salary Day] = SUM(CASE when [Program label] = 'Salary Day' then COUNT end) 
    , [Monthly] = SUM(CASE when [Program label] = 'Monthly' then COUNT end) 
    , [Policy] = SUM(CASE when [Program label] = 'Policy' then COUNT end) 
    , [Worst Record] = SUM(CASE when [Program label] = 'Worst Record' then COUNT end) 
FROM Totals 
GROUP BY [Date]; 
関連する問題