加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 公用表表达式上的PIVOT

发布时间:2020-12-12 16:26:18 所属栏目:MsSql教程 来源:网络整理
导读:我的CTE如下 WITH details AS ( SELECT FldId,Rev,Words,row_number() OVER ( PARTITION BY FldId ORDER BY Rev DESC ) AS rn FROM WorkItemLongTexts WHERE ID = 2855 ) SELECT f.ReferenceName,d.FldId,Words FROM details AS d INNER JOIN Fields AS f ON
我的CTE如下
WITH  details
        AS ( SELECT FldId,Rev,Words,row_number() OVER ( PARTITION BY FldId ORDER BY Rev DESC ) AS rn
             FROM   WorkItemLongTexts
             WHERE  ID = 2855
           )
  SELECT  f.ReferenceName,d.FldId,Words
  FROM    details AS d
          INNER JOIN Fields AS f ON f.FldId = d.FldId
  WHERE   d.rn = 1 ;

以上返回以下输出

ReferenceName    |   FldId      |    Rev     |    Words
Description            52            2            Description here  
Objectives           10257           2            Objectives here  
Specification        10258           6            Specification here  
Requirements          10259           6            Requirements here

我想应用PIVOT(或任何最佳选项),以便我可以获得如下输出

Description         |     Objectives     |   Specification      |  Requirements

这里的目标这里的目标规范这里的要求

PLS.建议.

谢谢

解决方法

WITH  details
        AS ( SELECT FldId,row_number() OVER ( PARTITION BY FldId ORDER BY Rev DESC ) AS rn
             FROM   WorkItemLongTexts
             WHERE  ID = 2855
           ),cte_1
        AS ( SELECT f.ReferenceName,Words
             FROM   details AS d
                    INNER JOIN Fields AS f ON f.FldId = d.FldId
             WHERE  d.rn = 1
           )
  SELECT  max(case [ReferenceName] WHEN 'Descripton' THEN [Words] ELSE NULL END) AS [Descripton],max(case [ReferenceName] WHEN 'Objectives' THEN [Words] ELSE NULL END) AS [Objectives],max(case [ReferenceName] WHEN 'Specification' THEN [Words] ELSE NULL END) AS [Specification],max(case [ReferenceName] WHEN 'Requirements' THEN [Words] ELSE NULL END) AS [Requirements]
  FROM    cte_1 ;

要么:

-- cte here as above
  SELECT  Description,Objectives,Specification,Requirements
  FROM    cte_1 PIVOT ( max(Words) FOR ReferenceName IN ( Description,Requirements ) ) AS PivotTable

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读