我试图将一个表转90度:使列行.由于PIVOT需要聚合函数,因此不允许PIVOT.
示例:我有一个包含列的表:
ID int,
ISO char(2),
Text varchar(255).
所以我有这个:
ID ISO Text -- --- ---- 1 DE Auto 2 EN Car
我想得到以下内容:
ID EN DE -- --- ---- 1 Car Auto
你是如何实现这一目标的?
这个答案真的是frantisek的,我只是在这里复制以纠正错误(我无法直接编辑).
基本上,您使用该解决方案,并进行调整:
SELECT max(DE) as DE, max(EN) as EN FROM test PIVOT (MAX([text]) FOR ISO in (DE,EN)) p
这将使内容成为一行.此外,它会删除ID,因为如果您想要一行(在组合成单行时没有逻辑来指示如何处理它),这是没有意义的.
此外,假设ISO列中的值是唯一的,否则,由于MAX
聚合,这将丢失数据.