这里是我的问题:拆分多个数据范围多行
我有一个表:
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
在代码在其上输入表中的一行的情况下工作的时刻,但考虑到我需要迭代它在多行我目前没有创建一个解决方案。这里的任何人都知道谁可以帮我解决这个问题?
非常感谢你提前, 亲切的问候, 路易吉
所以你想在这些日期范围之间的每一天的行? – SQLChao
是的,正好。对于多行.. – LuigiVe
我认为你只是想在两个日期之间为每个日期插入一行?为此,你需要的是一张理货表。这里根本不需要任何循环。这里是关于这个话题的一篇很棒的文章。 http://www.sqlservercentral.com/articles/T-SQL/62867/ –