【问题标题】:Show all columns when using pivot使用数据透视表时显示所有列
【发布时间】:2018-11-02 10:55:33
【问题描述】:

我正在努力构建一个动态表格(表格中的标题和表格中的单元格) 这是我的桌子

select rrc.Text , rch.Name
from RateColumnHeaders rch inner join
RateRowColumn rrc on rch.RateColumnHeadersId=rrc.RateColumnHeadersId

Text    Name
------------------------
test    Account Type
test2   Account Type
test3   Account Type
test4   Account Type
lorem1  Program
lorem2  Program
lorem3  Program
.           .
.           .
.           .

在使用 pivot 方法后,我得到了结果,但同时我需要显示所有列,而不仅仅是 max(text) 请问我该如何实现?

对我来说,我想显示这样的结果

Account Type |  Program |.....
test         |  lorem1  
test2        |  lorem2  
test3        |  lorem3  

。 . . 这是我的枢纽查询

select * from (
select rrc.Disclaimer,rch.Name,rrc.Text 
from RateRowColumn rrc 
inner join RateColumnHeaders rch 
on rrc.RateColumnHeadersId=rch.RateColumnHeadersId
) s pivot ( max(text) for name in ( [Account Type],[Program]) ) pvt 

【问题讨论】:

    标签: sql sql-server vb.net pivot


    【解决方案1】:

    你不想要一个支点(我不这么认为)。我认为您只想将每个组中的值作为列表列出。

    你可以使用条件聚合和row_number():

    select max(case when name = 'Account Type' then text end) as account_type,
           max(case when name = 'Program' then text end) as program,
           . . .
    from (select rrc.Text, rch.Name,
                 row_number() over (partition by rch.Name order by rrc.Text) as seqnum
          select rrc.Text, rch.Name
          from RateColumnHeaders rch inner join
               RateRowColumn rrc 
               on rch.RateColumnHeadersId = rrc.RateColumnHeadersId
         ) rrc
    group by seqnum;
    

    【讨论】:

    • 嗨 Gordon Linoff 非常感谢您的回复,请您给我确切的查询,因为我对 sql 查询没有太多经验
    猜你喜欢
    • 1970-01-01
    • 2022-06-24
    • 1970-01-01
    • 2014-01-08
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    相关资源
    最近更新 更多