방금 SQL을 배우기 시작했으며 세 개의 열 테이블을 올바르게 바꾸는 데 어려움을 겪고 있습니다.SQL Server 2008 - 하나의 열을 다른 열로 그룹화하고 세 번째 열에 대한 참조 유지
여기 내 출발점 :
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]에 의해 내 입력 테이블 그룹에서 [questionid]에/피벗 피벗 해제 할 필요가 알고 있지만, 나는 여전히 붙어 numerousotherquestions 보았다 데.
this answer을 기반으로합니다. 단 하나의 테이블로 작업 중이므로 내부 조인이 필요하지 않으므로 진행 방법을 잘 모릅니다.
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를 사용하면 문제가 발생합니다. 순위 기능 "ROW_NUMBER는"ORDER BY 절이 있어야합니다 6 호선 메시지 (4112)
, 수준 15, 상태 1,.
모든 도움을 주시면 감사하겠습니다.
SB
에 의해 분할 후 괄호를 닫습니다. – Mihai
@Mihai 아, 네 좋은 지적이야! 그것을 반영하기 위해 편집 됨. –