这是我第一次使用它,我希望我能做到这一点,我很生气。我仍然是所有这些使用 SQL 编程的新手,我正在尝试使用数据透视表将源表转换为所需的输出,如下所示。
这是我的源表
这是图片,我无法上传它 ( /image/KDStF.jpg )。
但无论我尝试什么,它都会返回数字,但返回我想要的 varchar 值,如上所示。 你们有人知道如何实现吗?
我在 Sql Server 中使用 Transact SQL,这是我的代码
SELECT [Ques1], [Ques2]
FROM
(
SELECT
D.DocumentId,
DA.QuestionId,
Q.ShortText,
DA.[Text],
Q.SectionId,
1 as [Count]
-- ShortText is literally 'Ques1' or 'Ques2'
FROM Document D
INNER JOIN DocumentAnswer DA
ON DA.DocumentId = D.DocumentId
INNER JOIN Question Q
ON Q.QuestionId = DA.QuestionId
WHERE D.DeleteDate IS NULL
) d
PIVOT
(
Max(ShortText)
FOR [Text] IN ([Ques1], [Ques2])
) p
最佳答案
MS SQL Server 2008 架构设置:
查询 1:
DECLARE @TABLE TABLE (DocID INT, Ques VARCHAR(100), Ans VARCHAR(100))
INSERT INTO @TABLE VALUES
(1 , 'Ques1' , 'Hola'),
(1 , 'Ques2' , 'Padr'),
(2 , 'Ques1' , 'Excue'),
(2 , 'Ques2' , 'Dir')
SELECT * FROM
( -- Put your existing query here
SELECT * FROM @TABLE
) t
PIVOT (MAX(Ans)
FOR Ques
IN ([Ques1],[Ques2])
)p
Results :
| DOCID | QUES1 | QUES2 |
|-------|-------|-------|
| 1 | Hola | Padr |
| 2 | Excue | Dir |
关于sql-server - 具有 varchar 值的数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27175946/