sql-server - 具有 varchar 值的数据透视表

标签 sql-server tsql pivot varchar

这是我第一次使用它,我希望我能做到这一点,我很生气。我仍然是所有这些使用 SQL 编程的新手,我正在尝试使用数据透视表将源表转换为所需的输出,如下所示。

这是我的源表

这是图片,我无法上传它 ( /image/KDStF.jpg )。 enter image description here

但无论我尝试什么,它都会返回数字,但返回我想要的 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

最佳答案

SQL Fiddle

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/

相关文章:

sql-server - SQL 如何使用表名表从表中选择特定字段

sql - 为什么将查询计数分配给变量比直接检查它效果更好?

SQL Server 连接忽略空值

sql-server - 在 T-SQL 中搜索 Varchar 和整数列

Oracle PIVOT 中 COUNT() 缺失数据

SQL 交叉表和数据透视表

sql-server - Entity Framework context.Database.ExecuteSqlCommand 不会将更改保存到数据库

SQL Server查询-循环问题

sql - sp_executesql 返回与直接查询不同的结果

python - 在 Python Pandas Pivot 中使用 stats.trim_mean ass aggfunc