首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

把几张临时表组合成一张临时表,该怎么解决

2013-07-04 
把几张临时表组合成一张临时表有临时表如下:#a:Item2013-2-12013-2-22013-2-32013-2-42013-2-5a12345#b:It

把几张临时表组合成一张临时表
有临时表如下:
#a:
Item2013-2-12013-2-22013-2-32013-2-42013-2-5
a   1           2            3            4            5
#b:
Item2013-2-12013-2-22013-2-32013-2-42013-2-5
b   1.1             2.2            3             4           5
#c:
Item2013-2-12013-2-22013-2-32013-2-42013-2-5
c   1.1            5             13             4            5
#d:

Item2013-2-12013-2-22013-2-32013-2-42013-2-5
d    7             1             11             2             9
组合成一张临时表如下:

Item2013-2-12013-2-22013-2-32013-2-42013-2-5
a    1            2           3           4           5
b   1.1           2.2           3           4           5
c   1.1            5          13           4           5
d    7            1          11           2           9
 问题在于,除了“Item”字段,其它字段都是未知的,不过最多只有15个,如何组合成以上的样式?
 请不吝赐教!
[解决办法]
提供个思路,先将所有的临时表做行列转置,从行转成列
Item
a2013-2-1   1   
a       2013-2-2   2
a2013-2-3   3
b       2013-2-4    4
b       2013-2-5   5
然后再进行行列转置,转回去,成为你想要的那种表格
[解决办法]
CREATE TABLE #t1 (item VARCHAR(5),d1 VARCHAR(15),d2 VARCHAR(15),d3 VARCHAR(15),d4 VARCHAR(15),d5 VARCHAR(15))



CREATE TABLE #t2 (item VARCHAR(5),d1 VARCHAR(15),d2 VARCHAR(15),d6 VARCHAR(15),d7 VARCHAR(15),d8 VARCHAR(15))

CREATE TABLE #t3 (item VARCHAR(5),d4 VARCHAR(15),d5 VARCHAR(15),d9 VARCHAR(15),d14 VARCHAR(15),d15 VARCHAR(15))

INSERT #t1 SELECT 'a',1,2,3,4,5

INSERT #t2 SELECT 'b',4,5,9,14,7

INSERT #t3 SELECT 'c',9,41,34,19,71

----
SELECT * FROM (

SELECT * FROM #t1 UNPIVOT ( ccc   for  aaa   IN (d1,d2,d3,d4,d5)) bBB1
UNION all
SELECT * FROM #t2 UNPIVOT ( ccc   for  aaa   IN (d1,d2,d6,d7,d8)) bBB2
UNION all
SELECT * FROM #t3 UNPIVOT ( ccc   for  aaa   IN (d4,d5,d9,d14,d15)) bBB3) bbbb
PIVOT (MAX(ccc) FOR aaa IN (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15)) cccc

-----结果
itemd1d2d3d4d5d6d7d8d9d10d11d12d13d14d15
a12345NULLNULLNULLNULLNULLNULLNULLNULLNULLNULL
b45NULLNULLNULL9147NULLNULLNULLNULLNULLNULLNULL
cNULLNULLNULL941NULLNULLNULL34NULLNULLNULLNULL1971

热点排行