Transact SQL Query-Pivot-SQL - PullRequest
       5

Transact SQL Query-Pivot-SQL

1 голос
/ 18 марта 2011

У меня есть таблица MySeekCatTable со структурой:

       SeekId  CatId

        J       1<= i<=45

в этой таблице каждый SeekId имеет три CatId.Таблица MySeekCatTable ссылается на две таблицы с внешними ключами:

первая таблица SeekTable с SeekId, поскольку первичный ключ имеет вид:

        SeekId  Name

          1     John

          2     Kelly

вторая таблица CatTable сCatId в качестве первичного ключа выглядит так:

        CatId   Name

          1     Cat1

          2     Cat2

Мне нужно написать запрос, который выдает для каждого SeekId три его CatId в формате:

      SeekId      A          B           C

        1         Cat1       Cat2        Cat3

        i         Cati       Catj        Catk

1 Ответ

1 голос
/ 19 марта 2011
;WITH cte
     AS (SELECT SeekId,
                CatId,
                ct.Name,
                ROW_NUMBER() OVER (PARTITION BY SeekId ORDER BY CatId) AS RN
         FROM   MySeekCatTable sk
                JOIN CatTable ct
                  ON sk.CatId = ct.CatId)
SELECT SeekId,
       MAX(CASE WHEN RN = 1 THEN Name END) AS A,
       MAX(CASE WHEN RN = 2 THEN Name END) AS B,
       MAX(CASE WHEN RN = 3 THEN Name END) AS C
FROM   cte
GROUP  BY SeekId  
...