現在SSISを使用しています。私は2列の開始日と終了日を持つテーブルを持っています。その間の曜日(開始日と終了日を含む)を計算し、他のデータを繰り返して毎日の行を生成する必要があります。結果の日付は新しい列に格納する必要があります。2つの日付の差を計算し、各エントリの新しい行を生成します。
-5
A
答えて
0
この作品を作るためのコツは、可能な範囲内にあるすべての日のリストを含むテーブルを持つことです。
次のクエリでは、私たちのセットMIN(Start)
の中で最も小さい日付を使用して偽装します。
次にsys.all_columnsビューの列数に基づいて1からNまでの数値のシーケンスを生成します。これで十分かもしれませんが、それはデータの不足に基づいているかもしれませんが、今のところうまくいきます。より多くの日付を生成する必要がある場合は、sys.all_coumnsテーブル自体にCROSSが適用されます。
私はその後を経由して、日付のリストを構築するために生成された番号を使用しdateadd
Iその後、私のALLDATES派生テーブルを取り、開始と終了の列の間ALLDATESのために生成日付をピン留め、INNERが元のテーブルにJOINを行います(終点を含む)。
CREATE TABLE dbo.so_36392684
(
WeekNo int NOT NULL
, Start datetime NOT NULL
, [End] datetime NOT NULL
, SpecialEvents varchar(20) NULL
);
INSERT INTO
dbo.so_36392684
(WeekNo, Start, [End], SpecialEvents)
VALUES
(
1
, '1989-09-14'
, '1989-09-20'
, NULL
);
SELECT
S.WeekNo
, S.Start
, S.[End]
, S.SpecialEvents
, ALLDATES.ConsecutiveDays
FROM
(
SELECT
DATEADD(DAY, D.rn, S.Start) AS ConsecutiveDays
FROM
(
-- Find the first date in our table
SELECT
MIN(S.Start) AS Start
FROM
dbo.so_36392684 AS S
) AS S
CROSS APPLY
(
-- Generate a (hopefully) sufficiently large enough set of dates
SELECT
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) -1 AS rn
FROM
sys.all_columns AS AC
) D
) AS ALLDATES
INNER JOIN
dbo.so_36392684 AS S
ON ALLDATES.ConsecutiveDays >= S.Start
AND ALLDATES.ConsecutiveDays <= S.[End];
結果は、あなたが希望出力に含まを表示する必要があり、この
WeekNo Start End SpecialEvents ConsecutiveDays
1 1989-09-14 1989-09-20 NULL 1989-09-14
1 1989-09-14 1989-09-20 NULL 1989-09-15
1 1989-09-14 1989-09-20 NULL 1989-09-16
1 1989-09-14 1989-09-20 NULL 1989-09-17
1 1989-09-14 1989-09-20 NULL 1989-09-18
1 1989-09-14 1989-09-20 NULL 1989-09-19
1 1989-09-14 1989-09-20 NULL 1989-09-20
関連する問題
- 1. SPARQL 2つの日付の差を計算する
- 2. Djangoテンプレート内の2つの日付間の日数を計算します
- 3. 特定の日の日付を別の日付に計算し、その差異を表示しますか?
- 4. 差異日付計算
- 5. jQueryの2つの日付時刻の時間差を計算する方法
- 6. 日付の差を計算した後、各日付に価格を割り当てる方法は? (date_diff)
- 7. 2つの日付間の日曜日を計算する
- 8. Ember.jsの日付差の計算
- 9. perlの日付差の計算方法
- 10. Djangoで2つの値を計算し、パーセンテージの差を計算する
- 11. 2つの日付間の差異を取得します。
- 12. 100 +日付が異なるタイムゾーンで現在の2つの日付が計算されている時刻を計算します...もっと計算する
- 13. Googleスプレッドシート:各日付の値の合計を計算し、最高の合計を返します
- 14. 日付差の合計を計算する
- 15. スポットファイアグラフテーブルの2つの計算値の差
- 16. TSQL - クエリの日付計算を計算し、値を設定しますか?
- 17. (のJava/Androidの)2つの日付間の日数を計算し、特定の形式で結果を提示し、私は次のように2つの日付の間の日数を計算やろうとしています
- 18. 2つの結果のRedux状態の間の差を計算します
- 19. は、2つの隣接していない列の間の差を計算
- 20. サーバーからのレポートと日付の差分を計算する
- 21. PHPの日付/時刻の差を計算する
- 22. MongoDBの2倍の差を計算してください
- 23. FireBird - 2つのタイムスタンプ間の時間差を計算しますか?
- 24. MySQLの2つの日付の差
- 25. 2つの特定の日付の差
- 26. MySQLは2つの日付を計算する
- 27. 行と2つのグループ間の平均時差の計算
- 28. MySQLは、日付範囲リストから各日付を生成します
- 29. 各グループのランクを計算します
- 30. 2つの日付の時差
ようになるはずです。 – artm
ソースは上記のスクリーンショットに示されているような列を持つ表であることを示します。このSQL Serverですか?もしそうなら、どのバージョン(2005、2008、2012、2014、2016)を使用していますか? – billinkc
「間の日数」? "結果の日付"?あなたが求めていることは明確ではありません。 –