如何在sql中将1行数据拆分成多行?

时间:2017-06-21 08:09:55

标签: sql

示例:

INPUT:

column1 column2 
10:00am 11:00am   

我必须得到以下输出

输出:

column1 column2 
10:00am 10:15am 
10:16am 10:20am 
10:21am 10:30am 
10:31am 10:40am 
10:41am 10:50am 
10:51am 11:00am

2 个答案:

答案 0 :(得分:1)

您的预期输出并非全部清晰......

你的第一个间隔是15分钟,其余的是10分钟。

你可以这样试试(严格的10分钟 - SQL Server语法):

DECLARE @Start TIME='10:00';
DECLARE @End TIME='11:30';
DECLARE @minuteIncrement INT=10;

WITH Tally AS
(
    SELECT TOP ((DATEDIFF(MINUTE,CAST(@Start AS DATETIME),CAST(@End AS DATETIME)))/@minuteIncrement) (ROW_NUMBER() OVER(ORDER BY (SELECT NULL))-1) * @minuteIncrement AS Nr 
    FROM master..spt_values
)
SELECT CAST(DATEADD(MINUTE,Nr+1,@Start) AS TIME) AS column1  
      ,CAST(DATEADD(MINUTE,Nr+@minuteIncrement,@Start) AS TIME) AS column2  
FROM Tally;

如果您确实需要不同的第一个intervall,则必须使用第一个严格的intervall启动计算值,并使用UNION ALL添加第一个步骤...

答案 1 :(得分:-1)

您可以使用(SELECT column1 FROM db) UNION (SELECT columns2 FROM db)