【问题标题】:how can i sql pivot this select?我怎样才能对这个选择进行 sql 透视?
【发布时间】:2011-02-11 16:30:49
【问题描述】:
SELECT sc.CID,sc.CodeName as OverviewText,scRAG.CodeName as RAGStatusText 
FROM StatusCode sc
    LEFT OUTER JOIN ProjectOverview po ON sc.CID = po.ProjectOverviewCID AND po.ProjectId = 180
    LEFT OUTER JOIN StatusCode scRAG ON po.RAGStatusCID = scRAG.CID
WHERE sc.SCID = 18

上面的代码结果如下:

CID OverviewText    RAGStatusText
153 Cost            Green
154 Requirements    Yellow
155 Schedule    NULL
156 Technical   NULL
157 Testing         NULL

我希望它返回一个包含 10 个字段的记录:

成本,绿色,要求,黄色, 计划,空, 技术,空, 测试,NULL

我可以以 cid 为中心吗?

【问题讨论】:

  • 据我所知,这是at least your 6th pivot question。到目前为止,您尝试过什么?
  • 第二。其余的是在代码中具有关键意义的变体或其他问题。
  • 包含 CID 列的表是否会在将来添加更多行,还是只读用于所有密集目的?

标签: sql-server pivot


【解决方案1】:

你能忍受一列而不是单独的列吗?像这样?

create table #t1([CID] int
,[OverviewText] varchar(12)
,[RAGStatusText] varchar(6))

insert #t1 values (153,'Cost','Green')
insert #t1 values (154,'Requirements','Yellow')
insert #t1 values (155,'Schedule',NULL)
insert #t1 values (156,'Technical',NULL)
insert #t1 values (157,'Testing',NULL)

select StringToSpit = stuff((select 
 [text()]=','+[OverviewText]+','+isnull([RAGStatusText],'NULL')
from #t1 
for xml path('')),1,1,'') 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 2016-04-04
    • 2021-09-17
    • 2021-08-13
    • 2017-07-06
    • 2020-10-22
    • 2018-12-06
    相关资源
    最近更新 更多