【发布时间】:2018-05-07 13:36:22
【问题描述】:
我知道堆栈溢出时有很多 PIVOT 两列,但似乎没有一个适合我的需要:(
这是初始设置:
CREATE TABLE TblPivot
(ID INT IDENTITY(1, 1),
Shop VARCHAR(MAX),
ElementId VARCHAR(10),
QuestionId VARCHAR(10),
[Value] VARCHAR(20)
);
GO
INSERT INTO TblPivot (Shop,ElementId,QuestionId,[Value]) VALUES ('Shop1','elem10','question1','one')
GO
INSERT INTO TblPivot (Shop,ElementId,QuestionId,[Value]) VALUES ('Shop1','elem11','question1','two')
GO
INSERT INTO TblPivot (Shop,ElementId,QuestionId,[Value]) VALUES ('Shop1','elem20','question2','1')
GO
INSERT INTO TblPivot (Shop,ElementId,QuestionId,[Value]) VALUES ('Shop1','elem20','question3','p1')
GO
INSERT INTO TblPivot (Shop,ElementId,QuestionId,[Value]) VALUES ('Shop1','elem21','question2','2')
GO
INSERT INTO TblPivot (Shop,ElementId,QuestionId,[Value]) VALUES ('Shop1','elem21','question3','p2')
我怀疑这一定是 CROSS-APPLY 和 PIVOT 的问题,但我不确定如何解决这个问题。
PS:元素ID可以为null
谢谢!
【问题讨论】:
-
使用您的连接问题和元素 (
QuestionID + ISNULL(' - ' + ElementID, '')) 生成一列,然后使用动态 SQL 以该列为中心。 -
@EzLo 你是个邪恶的天才
标签: sql sql-server pivot pivot-table