2011-07-26 9 views
0

異なる日付範囲に基づいて列を追加し、各日付範囲の対応する合計をビューに配置したいとします。SQLサーバーの日付範囲に基づいて異なる行を追加する方法

私は以下のようなテーブルを持っている:Q3とQ4は、3月と4月の合計記録している

   Q3  Q4 
Sum   18  19 

Date_From Available 
01/03/2011  5 
06/03/2011  6 
25/03/2011  7 
14/04/2011  9 
20/04/2011  10 

私はこのようなビューで出力したいです。

私は何をすべきか教えていただけますか?

+2

あなたはたくさんより具体的に必要になるだろう。あなたは、あなたが作業していることを示すサンプルスキーマと、結果として望むものを示す結果セットを投稿できますか? – mwigdahl

+0

私たちにいくつかのテーブル構造、サンプルデータ、これまで行ってきたクエリ、何がうまくいかないか(まだ)を説明し、いくつかのサンプル出力を見せてください。私たちは助けを始めることができます - 多分... –

答えて

0

私はあなたが3月と4月だけに関心があるわけではないと思っています。本当に必要なのは、毎月のロールアップです。 SQL Server 2005を使用しているので、dynamic PIVOTでこれを行うことができます。次のコードがテストされ、毎月の合計を別の列に戻す必要があります。私はあなたがこれを何年もの価値のあるデータで実行している場合に備えて、年を追加しました。あなたは彼らがユニークで、カラムしたいグループと対応にするために注意を払う必要がありますが、あなたは、生成された日付文字列を変更することによって、列見出しを変更することができます。

CREATE TABLE ##Tab (date_from datetime, available int) 
INSERT INTO ##Tab (date_from, available) VALUES ('3/1/2011', 5) 
INSERT INTO ##Tab (date_from, available) VALUES('3/6/2011', 6) 
INSERT INTO ##Tab (date_from, available) VALUES('3/25/2011', 7) 
INSERT INTO ##Tab (date_from, available) VALUES('4/14/2011', 9) 
INSERT INTO ##Tab (date_from, available) VALUES('4/20/2011', 10) 

DECLARE @month_year varchar(2000) 
SELECT @month_year = STUFF(
    (SELECT DISTINCT '],[' + CAST(datepart(mm, date_from) AS varchar) + 
     '/' + CAST(datepart(yy, date_from) AS varchar) 
    FROM ##Tab 
    ORDER BY '],[' + CAST(datepart(mm, date_from) AS varchar) + 
     '/' + CAST(datepart(yy, date_from) AS varchar) 
    FOR XML PATH('') 
    ), 1, 2, '') + ']' 

DECLARE @dyn_pivot nvarchar(max) 

SET @dyn_pivot = 
    N' 
     SELECT * 
     FROM 
     (
      SELECT CAST(datepart(mm, date_from) AS varchar) + ''/'' + CAST(datepart(yy, date_from) AS varchar) dt, SUM(available) AS available 
      FROM ##Tab 
      GROUP BY CAST(datepart(mm, date_from) AS varchar) + ''/'' + CAST(datepart(yy, date_from) AS varchar) 
     ) AS SourceTable 
     PIVOT 
     (
      AVG(available) 
      FOR dt IN (' + @month_year + N') 
     ) AS PivotTable 
    ' 

EXEC (@dyn_pivot) 
関連する問題