Sql 在新表中将行转换为列

Sql 在新表中将行转换为列,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我有一个表,其中有一些列,我想将列值转换为另一个表的列 我附上一个屏幕截图我的要求 上表是我的主表,比如说表1,下表是我需要的表。 谢谢虽然建议的复制品会让你走一段路,但实际上你需要先取消pivot,然后再旋转,就像这样 (哦,请不要发布图片。DDL很受欢迎,可以帮我们省去打字和/或猜测。) 我想旋转就足够了: SELECT * FROM ( SELECT [Action], [Key], 'Old' + Old as [a], OldValue as [Value] FROM

我有一个表,其中有一些列,我想将列值转换为另一个表的列

我附上一个屏幕截图我的要求

上表是我的主表,比如说表1,下表是我需要的表。
谢谢

虽然建议的复制品会让你走一段路,但实际上你需要先取消pivot,然后再旋转,就像这样

(哦,请不要发布图片。DDL很受欢迎,可以帮我们省去打字和/或猜测。)


我想旋转就足够了:

SELECT *
FROM (
    SELECT [Action], [Key], 'Old' + Old as [a], OldValue as [Value]
    FROM Table1
    UNION ALL
    SELECT [Action], [Key], 'New' + New, NewValue
    FROM Table1
    ) as p
PIVOT (
    MAX([Value]) FOR [a] IN ([OldCol1],[OldCol2],[OldCol3],[NewCol1],[NewCol2],[NewCol3],[NewCol45])
) as pvt
输出:

Action  Key OldCol1 OldCol2 OldCol3 NewCol1 NewCol2 NewCol3 NewCol45
I       123 NULL    NULL    NULL    NULL    NULL    NULL    Sun
U       123 Dog     Cat     Honey   Dog     Mouse   Bee     NULL

如果有许多
Old
和'New'值,那么您需要动态SQL

您可以使用case简单地将mysql原始数据透视到列statment@Jens-很抱歉,这是一个错误,我正在使用sql server 2012可能是@Ashwin的副本-感谢您的回复,但您能帮助我满足此要求吗?这对您有帮助要求所以这不是一个代码编写服务,所以你应该感谢它的工作,现在我知道我的错误在哪里了。如果我的答案对你有帮助,那就太好了!:)这也行得通,但grof1的解决方案与我遇到的问题非常接近。谢谢你
Action  Key OldCol1 OldCol2 OldCol3 NewCol1 NewCol2 NewCol3 NewCol45
I       123 NULL    NULL    NULL    NULL    NULL    NULL    Sun
U       123 Dog     Cat     Honey   Dog     Mouse   Bee     NULL