1

私は次のようなデータテーブルを持っています

CANDID  QID   OptID
11      56    116
11      56    117
11      57    118
11      57    119
11      60    124
11      60    125
11      60    126
11      62    129
11      62    130
11      62    131

このデータを次のように表示する方法

CANDID   QID    OptID1   OptID2   OptID3   OptID4 
11       56     116      117      null     null
....
....

11       60     124      125      126      null

私はこれを試しましたが、これは私の望む出力ではありません。

SELECT CANDID,
       QID,
       MIN(OptID) AS OptID1,
       MAX(OptID) AS OptID4
FROM   #TEMP1
GROUP  BY CANDID,
          QID 
4

2 に答える 2

1
CREATE TABLE #TEMP1
    ([CANDID] int, [QID] int, [OptID] int)
;

INSERT INTO #TEMP1
    ([CANDID], [QID], [OptID])
VALUES
    (11, 56, 116),
    (11, 56, 117),
    (11, 57, 118),
    (11, 57, 119),
    (11, 60, 124),
    (11, 60, 125),
    (11, 60, 126),
    (11, 62, 129),
    (11, 62, 130),
    (11, 62, 131)
;

WITH T
     AS (SELECT [CANDID], 
                [QID], 
                [OptID],
                ROW_NUMBER() OVER (PARTITION BY [CANDID], [QID] ORDER BY [OptID]) AS RN
         FROM   #TEMP1)
SELECT CANDID,
       QID,
       [1] AS OptID1,
       [2] AS OptID2,
       [3] AS OptID3,
       [4] AS OptID4
FROM   T PIVOT (MAX([OptID]) FOR RN IN ([1], [2], [3], [4])) AS P 


DROP TABLE #TEMP1

戻り値

CANDID      QID         OptID1      OptID2      OptID3      OptID4
----------- ----------- ----------- ----------- ----------- -----------
11          56          116         117         NULL        NULL
11          57          118         119         NULL        NULL
11          60          124         125         126         NULL
11          62          129         130         131         NULL
于 2013-04-30T10:01:02.323 に答える