在具有相同Id的单列中组合两行

时间:2017-10-03 08:18:47

标签: sql sql-server

目前这是我如何返回值。但我想组合具有相同Id的行。我尝试使用unpivot,但我无法让它工作。 这是我的疑问:

   SELECT * FROM 
(
    SELECT 
            ID,
            Setup, 
            Message
    FROM myViewHere
)
AS tempTable
UNPIVOT
(
    [Message]
    FOR Test
    IN (ID, Setup) 
) AS PVT

这是 myViewHere

的结果
    |ID | Setup  | Message  |
    |---|--------|----------|
    | 1 | Header | myHeader |
    |---|--------|----------|
    | 1 | Footer | myFooter |

我想要实现的目标:

    |ID | Header   | Footer   |
    |---|----------|----------|
    | 1 | myHeader | myFooter |
    |---|----------|----------|

2 个答案:

答案 0 :(得分:2)

典型的支点案例https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx

假设的表名是“来源”

SELECT ID, [Header], [Footer]
FROM source
PIVOT
( max(Message) FOR Setup IN ([Header], [Footer])) p;

请参阅sqlfeedle http://sqlfiddle.com/#!6/7635f/7

上的测试

答案 1 :(得分:0)

您可以将视图查询更改为如下所示

  SELECT * FROM 
(
    SELECT 
            ID,
            Setup, 
            Message
    FROM myViewHere
)
AS tempTable
UNPIVOT
(
    [Message]
    FOR Test
    IN (ID, Setup) 
) AS UNPVT
PIVOT
(
    MAX([Message]) 
    FOR [Setup] 
    IN ([Header], [Footer])
)PVT