0

我的列看起来像这样:

UserID    col1    col2    col3    col4
---------------------------------------
233432    45.2    34.2    ''      0.52

我希望它看起来像这样:

UserID    colID    value
-------------------------
233432    col1     45.2
233432    col2     34.2
233432    col3     ''
233432    col4     0.52

我在下面找到了这个链接:

在sql server中的列到行?

但它并没有真正回答我的问题。我的问题。我正在使用 Sql Server 2012。

4

2 回答 2

2

由于您使用的是 SQL Server 2008+,因此您可以使用 CROSS APPLY 和 VALUES 来取消透视数据:

select t.userid,
  c.colid,
  c.value
from yourtable t
cross apply
(
  values
  ('col1', col1),
  ('col2', col2),
  ('col3', col3),
  ('col4', col4)
) c (colid, value);

请参阅带有演示的 SQL Fiddle

于 2013-07-12T00:25:02.850 回答
1
Select UserID,'col1',col1 as 'value' from mytable
union
Select UserID,'col2',col2 from mytable
union
Select UserID,'col3',col3 from mytable
union
Select UserID,'col4',col4 from mytable
于 2013-07-11T16:52:33.703 回答