테스트 데이터
DECLARE @AccidentType TABLE(AccidentTypeID INT, [Description] NVARCHAR(100))
INSERT INTO @AccidentType VALUES
(1,'Type1'),(2,'Type2'),(3,'Type3'),(4,'Type4')
DECLARE @CaseAccidentType TABLE(AccidentTypeID INT,CaseID INT)
INSERT INTO @CaseAccidentType VALUES
(1,1000),(2,1000),(3,1001)
DECLARE @Case TABLE(CaseID INT, Name NVARCHAR(100))
INSERT INTO @Case VALUES
(1000,'Case A'),(1001,'Case B')
쿼리
;With CTE
AS(
SELECT *
FROM
(
SELECT C.CaseID,C.Name, AT.[Description]
FROM @Case C INNER JOIN @CaseAccidentType CAT
ON C.CaseID = CAT.CaseID
INNER JOIN @AccidentType AT
ON CAT.AccidentTypeID = AT.AccidentTypeID
) Q
PIVOT
(MAX(Name)
FOR [Description]
IN ([Type1],[Type2],[Type3],[Type4])
)Pv
)
SELECT CT.CaseID
,C.Name
,CASE WHEN CT.Type1 IS NOT NULL THEN 'TRUE' ELSE 'FALSE' END AS Type1
,CASE WHEN CT.Type2 IS NOT NULL THEN 'TRUE' ELSE 'FALSE' END AS Type2
,CASE WHEN CT.Type3 IS NOT NULL THEN 'TRUE' ELSE 'FALSE' END AS Type3
,CASE WHEN CT.Type4 IS NOT NULL THEN 'TRUE' ELSE 'FALSE' END AS Type4
FROM CTE CT INNER JOIN @Case C
ON CT.CaseID = C.CaseID
결과 설정
╔════════╦════════╦═══════╦═══════╦═══════╦═══════╗
║ CaseID ║ Name ║ Type1 ║ Type2 ║ Type3 ║ Type4 ║
╠════════╬════════╬═══════╬═══════╬═══════╬═══════╣
║ 1000 ║ Case A ║ TRUE ║ TRUE ║ FALSE ║ FALSE ║
║ 1001 ║ Case B ║ FALSE ║ FALSE ║ TRUE ║ FALSE ║
╚════════╩════════╩═══════╩═══════╩═══════╩═══════╝
항상 1,2,3,4가 될까요? 아니면 더 될 수 있을까요? 제한 없음? – MrSimpleMind
다양한 유형이 있습니다. 유형을 하드 코딩하지 않고이 작업을 수행 할 수 있습니까? – Jammy