我刚开始学习SQL,并正与正确调换一个三列的表中挣扎。
这里是我的出发点:
questionid | DebriefingQuestionResults | OperationSessionRecordID
------------------------------------------------------------------
32 | 3 | 8071
34 | 0 | 8071
36 | 1 | 8071
32 | 2 | 8074
34 | 6 | 8074
36 | 5 | 8074
这里就是我想生产什么:
OperationSessionRecordID | 32 | 34 | 36
----------------------------------------------
8071 | 3 | 0 | 1
8074 | 2 | 6 | 5
只有三种[questionid]的值(32,34,和36),但约12000 [OperationSessionRecordID]值。 所有列的类型为int not null
。
我知道我需要通过[OperationSessionRecordID]从我的输入表和组UNPIVOT上[questionid] /支点,但已经看了很多 其他 的问题我还是很坚持。
基于这个答案我有这到目前为止,但我不知道如何着手,因为我有一个表的工作,因此不需要内部联接。
SELECT [32], [34], [36]
FROM
(
SELECT A.questionid, A.DebriefingQuestionResults
, row_number() over(partition by a.OperationSessionRecordID)
FROM dbo.TEMPtable AS A
) AS P
PIVOT
(
min(P.Value)
for P.questionid in ([32], [34], [36])
) AS PIV;
当我运行这个它抛出这个错误,所以什么明显错了我的使用ROW_NUMBER的。
消息4112,级别15,状态1,第6行分级功能“ROW_NUMBER”必须有一个ORDER BY子句。
非常感激任何的帮助!
SB