您应该能够使用UNPIVOT此:
这是一个静态的支点,你硬编码在列的值:
create table t1
(
col1 varchar(5),
col2 varchar(5),
col3 varchar(5),
col4 varchar(5)
)
insert into t1 values ('xxxx', 'yyyy', 'zzzz', 'aaaa')
select question, answer
FROM t1
unpivot
(
answer
for question in (col1, col2, col3, col4)
) u
drop table t1
这里是一个SQL Fiddle与演示。
,但你也可以使用动态逆透视:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
select @cols = stuff((select ','+quotename(C.name)
from sys.columns as C
where C.object_id = object_id('t1') and
C.name like 'Col%'
for xml path('')), 1, 1, '')
set @query = 'SELECT question, answer
from t1
unpivot
(
answer
for question in (' + @cols + ')
) p '
execute(@query)
你是什么意思它是不做以上?这正是UNPIVOT的目标。你究竟做了什么,究竟是如何不起作用的?也许只是阅读这里的例子http://msdn.microsoft.com/en-us/library/ms177410(v=sql.105).aspx –