2016-04-01 10 views
1

私は1つの日付列を持つテーブルを持っています。ピボットを使用する方法と2つの異なる集計関数を使用する方法は?

Year Jan Feb Mar...Dec Total 
2015..... 
2016 10 15 10... 10 115 
2017..... 

PIVOT機能を使用して達成するために、このことは可能ですし、どのように正確に私は上記目的を達成するためにそれを使用します:私はのような行列を持つように私はグループに年と月によって日付がしたいですか?

答えて

2

あなたは、このクエリを使用してみてくださいPIVOTずに

SELECT 
    DATEPART(yyyy,t.the_date) as year, 
    SUM(CASE WHEN DATEPART(mm,t.the_date)=1 THEN 1 ELSE 0 END) as Jan, 
    SUM(CASE WHEN DATEPART(mm,t.the_date)=2 THEN 1 ELSE 0 END) as Feb, 
... 
    SUM(CASE WHEN DATEPART(mm,t.the_date)=12 THEN 1 ELSE 0 END) as Dec, 
    COUNT(*) as Total 
FROM the_table t 
GROUP BY DATEPART(yyyy,t.the_date) 
+0

これはあまりにも動作します。そのようなクエリに 'PIVOT'を使用することはまだ可能で、' GROUP BY'よりも優れたパフォーマンスを発揮します。 –

1

を達成することができます -

SELECT * 
    FROM (
     SELECT 
      year(yourDate) as [year],left(datename(month,yourDate),3)as [month], 
      Amount 
     FROM YourTableName 
    ) as s 
    PIVOT 
    (
     SUM(Amount) 
     FOR [month] IN (jan, feb, mar, apr, 
     may, jun, jul, aug, sep, oct, nov, dec) 
    )AS pvt 
関連する問題