日期:2014-05-18  浏览次数:20493 次

如何通过一条SQL语句得到如下效果,在线等!!!!!
我有一表数据,只有一条数据
列名   A   B   C   D   E   F   G   H   I   J   K   M
          1   a   b   2   c   d   3   e   f   4   g   h
要通过一条SQL语句得到如下效果(不能用存储过程,只能一条SQL语句):
          1   a   b
          2   c   d
          3   e   f
          4   g   h

------解决方案--------------------
select a,b,c union all
select d,e,f union all
select g,h,i union all
select j,k,m

------解决方案--------------------
select a,b,c union select d,e,f union select g,h,i union select j,k,m
------解决方案--------------------
select a,b,c from tablename union all
select d,e,f from tablename union all
select g,h,i from tablename union all
select j,k,m

------解决方案--------------------
---加个排序的
---创建测试环境
Declare @T Table(A int,B varchar(8),C varchar(8),
D int,E varchar(8),F varchar(8),
G int,H varchar(8),I varchar(8),
J int,K varchar(8),M varchar(8))
Insert @T Select 1, 'a ', 'b ',2, 'c ', 'd ',3, 'e ', 'f ',4, 'g ', 'h '
Union All Select 5, 'x ', 'x ',6, 'y ', 'y ',7, 'z ', 'z ',8, 't ', 't '

Select * From @T
---查询结果
select * from (
select a,b,c from @T union all
select d,e,f from @T union all
select g,h,i from @T union all
select j,k,m from @T
) T order by a
--结果
/*
a b c
----------- -------- --------
1 a b
2 c d
3 e f
4 g h
5 x x
6 y y
7 z z
8 t t

(所影响的行数为 8 行)
*/
------解决方案--------------------
我可能说得不够明白啊,因为我那个表
A B C D E F G H I J K M
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
1 a b 2 c d 3 e f 4 g h

是通过很长的语句得来,而且那条语句里面有where 条件的,如不是这样我也不来问大家了,除了union 还有别的写法吗?

----------------------------------------------------
那就再动态构造 SELECT...UNION ALL...的语句,除了这个方法,似乎没别的方法了!