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压缩成一行.我不记得怎么做其中任何一个!
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)
