构建一个PIVOT

Jos*_*ola 3 sql t-sql sql-server pivot sql-server-2008

我认为PIVOT会帮助我实现这一目标,但我无法开始任何事情.我今天有严重的SQL脑屁,我需要一些帮助.

这是我现在的输出:

Id    Name  Question    Answer
0     Test  Vault       A
0     Test  Container   1
1     Foo   Vault       B
1     Foo   Container   2
Run Code Online (Sandbox Code Playgroud)

这是我想要的输出:

Id   Name Vault Container
0    Test A    1
1    Foo  B    2
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?

如果这不可能或非常复杂,我有另一种方法来解决这个问题.我的备用查询的输出是:

Id   Name VaultId ContainerId
0    Test A       NULL
0    Test NULL       1
1    Foo  B       NULL  
1    Foo  NULL       2
Run Code Online (Sandbox Code Playgroud)

在这里,我需要能够将每个Id/Name压缩成一行.我不记得怎么做其中任何一个!

Roy*_*mir 5

DECLARE @Test TABLE
(
     Id      INT 
    ,[Name]VARCHAR(10) NOT NULL
    ,Question       VARCHAR(10) NOT NULL,
    Answer VARCHAR(10)

);  
INSERT  @Test   VALUES (0,'test1', 'vault','a');
INSERT  @Test   VALUES (0,'test1', 'Container ','1');
INSERT  @Test   VALUES (1,'test4', 'vault','b');
INSERT  @Test   VALUES (1,'test4', 'Container','2');



;WITH CTE
AS
(
    SELECT  t.id, t.[Name], t.[Question    ]   ,t.Answer
     FROM    @Test t
)

SELECT  * 
FROM    CTE
 PIVOT   ( max(answer) FOR Question     IN (vault,container) )  f;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述