您可以使用该UNPIVOT
功能来获取它。
基本语法是:
select *
from research
unpivot
(
value
for col in (soc0, soc1, soc40)
) un;
请参阅带有演示的 SQL Fiddle
但是您必须输入所有要取消透视的列名。如果您不想键入所有列名,那么您可以使用动态 SQL:
DECLARE @colsUnpivot AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @colsUnpivot = stuff((select ','+quotename(C.column_name)
from information_schema.columns as C
where C.table_name = 'research' and
C.column_name like 'soc%'
for xml path('')), 1, 1, '')
set @query
= 'select id, col, value
from research
unpivot
(
value
for col in ('+ @colsunpivot +')
) u'
exec(@query)
请参阅带有演示的 SQL Fiddle
但是如果你只想要一个列名列表,那么你可以直接查询它而不需要 unpivot:
select C.table_name, C.column_name
from information_schema.columns c
where C.table_name = 'research' and
C.column_name like 'soc%'
请参阅带有演示的 SQL Fiddle