SQL Server 2008:擬似SQLを実際の実行に変換するのは苦労しています。SQL Serverの連続/累積日
id, startdate, enddate
をので、例えば:
1,1/1/2010,2/1/2010
1,3/1/2010,3/15/2010
2,4/1/2010,6/1/2010
2,5/1/2010,5/15/2010
2,7/1/2010,7/15/2010
各IDが複数回記載されていることができ、日付が重なってできた場合要するに、私が持っているデータセットを持っています。
必要なもの:
)各IDの連続した日数を取得します。したがって、たとえば:
1 = 1/1/2010 thru 2/1/2010 + 3/1/2010 through 3/15/2010 = 43
2 = 4/1/2010 thru 6/1/2010 + 7/1/2010 through 7/15/2010 (note: the 5/1/10 thru 5/15 was omitted because it overlapped)
私の最初に考えたのは、これを行うだろうSQLクエリを記述することでした:
Date, ID, Active
私は、全体の年間のデータを引っ張っていますので、私は/日を持っているでしょうテーブル内の各IDのIDエントリ。 「アクティブ」は、IDがその特定の日に「オン」であったかどうかに応じて1または0になります。
私はそれをグループ化して、その年のために私の「別個の」累積を得ることができました。
問題は、300,000,000,000以上のレコードを持つテーブルが作成され、これを行うためのより良い方法がないとは想像できません。
アドバイスをいただければ幸いです。
それが唯一のフルオーバーラップされます(あなたの例を与える/ 5/1-5/15ワット)、または7/1-7/15と7/3-7/18のようなものがありますか?7/1-7/18 –
あなたはアクティブでなくてもいいです。結果のデータ・セットにある行でDISTINCTを使用します。 – Natalia