考虑下表#document_fields
如何将UNPIVOT列转化为行?
id x y z
------------------
1 foo bar baz
2 one two three
3 aaa bbb ccc
4 123 456 789
列的数目可能会有所不同,因为这样做的列名。我需要的列转动到行这样的:
id field value
---------------
1 x foo
1 y bar
1 z baz
2 x one
2 y two
2 z three
.
.
3 z 789
我想了解在SQL Server的作品转动方式,但不能得到任何比这再:
select
*
into
#document_fields_pivot
from (
select * from (
select *
from #document_fields
) t
pivot (
-- ??
) p
) tbl
任何人都可以帮我完成这个查询/解释我pivoting?任何帮助是极大的赞赏。
谢谢!但我收到了一个错误:列“y”的类型与UNPIVOT列表中指定的其他列的类型冲突。我在另一个线程中读取这是因为所有的列必须具有相同的数据类型和长度。在这个例子中,是否有一种快速遍历列(x,y和z,但据说可能还有数以百计)的快速方法,并将它们全部转换为相同的数据记录和长度? – Pr0no
不是我所知道的。不过,我很好奇你为什么会在你的桌子上有这种结构。我的意思是你不应该在一个专栏中有文字和数字吗?或者我错过了一些简单的东西? –
是的,它真的很简单:)客户希望以这种格式进行数据转储,以便在Excel中轻松过滤。所以这个脚本只是生成那个excel。当然,实际上所有的东西都应该存储:) – Pr0no