【问题标题】:Transact SQL Query-Pivot-SQLTransact SQL 查询-数据透视-SQL
【发布时间】:2011-03-18 20:57:52
【问题描述】:

我有一个表MySeekCatTable 的结构:

       SeekId  CatId

        J       1<= i<=45

在此表中,每个SeekId 都有三个CatId。 表MySeekCatTable 引用了两个带有外键的表:

SeekId为主键的第一张表SeekTable如下:

        SeekId  Name

          1     John

          2     Kelly

CatId为主键的第二张表CatTable如下:

        CatId   Name

          1     Cat1

          2     Cat2

我的需要是我必须编写一个查询,为每个SeekId 三个CatId 提供以下格式:

      SeekId      A          B           C

        1         Cat1       Cat2        Cat3

        i         Cati       Catj        Catk

【问题讨论】:

    标签: sql sql-server tsql pivot


    【解决方案1】:
    ;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  
    

    【讨论】:

      猜你喜欢
      • 2016-06-22
      • 2011-06-18
      • 2019-07-22
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多