繁体   English   中英

SQL Server动态PIVOT查询-字段顺序

[英]SQL Server dynamic PIVOT query - fields order

指已解决的问题SQL Server动态PIVOT查询? ,我尝试以相反的顺序在新表中显式排序由Category(ABC,DEF和GHI)创建的字段。 即,输出表现在具有以下字段(数据,ABC,DEF,GHI),我想获取(数据,GHI,DEF,ABC)。

非常感谢D。

  create table temp
(
    date datetime,
    category varchar(3),
    amount money
)

insert into temp values ('1/1/2012', 'ABC', 1000.00)
insert into temp values ('2/1/2012', 'DEF', 500.00)
insert into temp values ('2/1/2012', 'GHI', 800.00)
insert into temp values ('2/10/2012', 'DEF', 700.00)
insert into temp values ('3/1/2012', 'ABC', 1100.00)


DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.category) 
            FROM temp c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT date, ' + @cols + ' from 
            (
                select date
                    , amount
                    , category
                from temp
           ) x
            pivot 
            (
                 max(amount)
                for category in (' + @cols + ')
            ) p '


execute(@query)

drop table temp

只需像这样更改列列表( @cols

SET @cols = Stuff((SELECT DISTINCT ',' + Quotename(c.category)
                   FROM   temp c
                   ORDER  BY ',' + Quotename(c.category) DESC
                   FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM