の範囲で私の問題である:スプリット複数のデータは、ここでは複数行に
私はテーブルを持っている:
FIELD_1 FIELD_2 FIELD_N StartDate EndDate OTHER_FIELDS
value1 value2 valuen 2016-01-12 2016-05-12 othervalues
value3 value4 valuen 2015-01-12 2015-05-12 othervalues
私は他の複数の行に複数の行のデータ範囲を分割する必要があります。以下のように
:ここ
StartDate EndDate other_columns
2016-01-12 2016-05-12 myvalues
2016-01-13 2016-05-12 myvalues
2016-01-14 2016-05-12 myvalues
.. .. ..
.. .. ..
2015-01-12 2015-05-12 myvalues
2015-01-13 2015-05-12 myvalues
.. .. ..
は私のコードです:
CREATE TABLE [dbo].[OUTPUT_TABLE](
[STARTDATE] [datetime] NULL,
[ENDDATE] [datetime] NULL,
[OTHER_FIELDS] [nvarchar](30) NULL,
) ON [PRIMARY]
GO
DECLARE @cnt INT
DECLARE @startDate DATETIME
DECLARE @endDate DATETIME
DECLARE @incr INT
DECLARE @tempDate DATETIME
SET @startDate=(SELECT [StartDate]
FROM [dbo].[INPUT_TABLE])
SET @endDate=(SELECT [EndDate]
FROM [dbo].[INPUT_TABLE])
SET @cnt=Datediff(dd, @startDate, @endDate)
SET @incr=0
SET @tempDate=Dateadd(dd, @incr, Cast(@startDate AS DATETIME))
WHILE @cnt >= 0
BEGIN
IF @cnt = 0
BEGIN
INSERT INTO [dbo].[OUTPUT_TABLE]
VALUES (@tempDate,
@endDate,
NULL
);
END
ELSE
BEGIN
INSERT INTO [dbo].[OUTPUT_TABLE]
VALUES (@tempDate,
Dateadd(dd, Datediff(dd, 0, @tempDate) + 1, -1),
NULL
);
END
SET @tempDate=Dateadd(dd, @incr + 1, Dateadd(dd, Datediff(dd, 0,
@startDate)
, 0))
SET @[email protected] - 1
SET @[email protected] + 1
END
現時点でコードが入力テーブルの上に単一の行を有する場合には作業が、私がする必要が検討しています私は現在解決策を見つけていない複数の行にそれを繰り返します。誰でも私が問題を解決するのを手伝ってくれる人がいますか?
は ルイージ
これらの日付範囲の間に1日の行が必要ですか? – SQLChao
はい、正確です。複数の行の場合.. – LuigiVe
2つの日付の間の日付ごとに行を挿入しようとしていると思いますか?このためには、集計表が必要です。ここにループを張る必要は全くありません。ここでは、このトピックに関する素晴らしい記事です。 http://www.sqlservercentral.com/articles/T-SQL/62867/ –