【问题标题】:Pivot table without knowing row values不知道行值的数据透视表
【发布时间】:2013-07-30 08:29:39
【问题描述】:

这是我的桌子 - Select ItemName, ItemDescription from MyTable

我不知道 ItemNameItemDescription 中的值是什么。

是否可以显示数据,以便将 ItemName 创建为列,并将 ItemDescription 作为行值?

【问题讨论】:

    标签: sql-server tsql pivot rows


    【解决方案1】:

    需要 mssql 2008+

    create table mytable( ItemName varchar(10), ItemDescription varchar(10))
    
    insert mytable values('item 1', 'desc1')
    insert mytable values('item 2', 'desc2')
    insert mytable values('item 1', 'desc2')
    
    declare @list varchar(2000)
    ;with cte 
    as(
    select distinct top 100 percent replace(replace(itemname, ']', ''), '[', '') itemname
    from mytable
    order by itemname
    )
    select @list = coalesce(@list + ',' + '['+itemname+']', '['+itemname+']') from cte
    
    declare @sql varchar(4000)
    set @sql =
    '
    select * from
    (
    select replace(replace(itemname, '']'', ''''), ''['', '''') itemname, ItemDescription, row_number() over (partition by ItemName order by ItemDescription) id from mytable
    )  a
    PIVOT (MAX([ItemDescription]) FOR [itemname] IN ('+@list+')) AS pvt'
    
    exec (@sql)
    

    结果:

    id  item 1  item 2
    1   desc1   desc2
    2   desc2   NULL
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多