搜索线程我只能找到组合或合并,但不插入并保留原始值。 因此,这里是我:SQL - 在不合并数据的情况下将一列插入另一列
ID time1 time2 time3
1 20 NULL 30
2 50 NULL NULL
2 20 30 40
我需要的是:
ID time
1 20
1 30
2 50
2 20
2 30
2 40
而忽略空值。 谢谢!
搜索线程我只能找到组合或合并,但不插入并保留原始值。 因此,这里是我:SQL - 在不合并数据的情况下将一列插入另一列
ID time1 time2 time3
1 20 NULL 30
2 50 NULL NULL
2 20 30 40
我需要的是:
ID time
1 20
1 30
2 50
2 20
2 30
2 40
而忽略空值。 谢谢!
与逆转置它处理由默认NULL
值比较,不包括那些从结果集试试这个。
参考目的,在螺纹给出
CREATE TABLE #TempTable(
ID int,
time1 int, time2 int, time3 int)
INSERT INTO #TempTable (ID, time1, time2,time3)
VALUES (1, 20, NULL, 30),
(2, 50, NULL, NULL),
(2, 20, 30, 40)
解决方案中的样本数据沿着一个临时表在这里与上述的临时表数据
SELECT ID, [time]
FROM #TempTable
UNPIVOT
(
[time]
for [timecolumnName] in (time1, time2,time3)
) unpiv;
select id, time1 as time from your_table where time1 is not null
union all
select id, time2 from your_table where time2 is not null
union all
select id, time3 from your_table where time3 is not null
你只有三列吗?如果是这样,
INSERT [NewTable]
(Id, time)
SELECT Id, time1
FROM [OldTable]
WHERE time1 IS NOT NULL;
INSERT [NewTable]
(Id, time)
SELECT Id, time2
FROM [OldTable]
WHERE time2 IS NOT NULL;
INSERT [NewTable]
(Id, time)
SELECT Id, time3
FROM [OldTable]
WHERE time3 IS NOT NULL;
如果你可以有三个以上的让我们知道 - 你仍然可以做到这一点与动态SQL
是在列数源表固定? –
只是一个提示,如果你想以后玩这个,如果可以的话,添加一个列到第二个表,“timesource”,填充源列 – JohnHC
可能的重复:http://stackoverflow.com/questions/ 49925 /工会与工会之间的区别是什么 – lalithkumar