SQL Server 如何透视或取消透视此表以实现此特定输出?

eh57zj3b  于 2023-02-03  发布在  其他
关注(0)|答案(1)|浏览(146)

我使用的是SQL Server 2014,有下表(T1):

ID      HOTEL   ADDRESS      COORDINATES      DESCRIPTION        VALUE
A001       A      Royal Road        20.5       GP FA MARKINGS       2
A001       A      Royal Road        20.5       GP FA COMMENT        All Good
A001       B      Royal Road        20.5       AB TC MARKINGS       3
A001       B      Royal Road        20.5       AB TC COMMENT        Check Staff List

我需要转换此表,以便获得以下输出:

ID      HOTEL       ADDRESS      COORDINATES   DESCRIPTION     MARKINGS      COMMENT 
A001       A           Royal Road      20.5       GP FA           2         All Good
A001       B          Royal Road       20.5       AB TC           3        Check Staff List

我尝试了unpivot函数,但它不起作用。我在互联网上和这里的stackoverflow上搜索了类似的问题,但我找不到任何与我的问题密切相关的东西。
任何帮助都将不胜感激。

uubf1zoe

uubf1zoe1#

我想这将给予所提供数据的正确输出,但是分组方式可能不正确,这取决于其余的行,如果是一个大表,性能可能会很差。

SELECT ID, HOTEL, ADDRESS, COORDINATES, LEFT(DESCRIPTION, 5) AS DESCRIPTION,
    MAX(CASE WHEN DESCRIPTION LIKE '%MARKINGS' THEN VALUE END) AS MARKINGS,
    MAX(CASE WHEN DESCRIPTION LIKE '%COMMENT' THEN VALUE END) AS COMMENT
GROUP BY ID, HOTEL, ADDRESS, COORDINATES, LEFT(DESCRIPTION, 5)

相关问题