【问题标题】:mssql hierarchy one row to multiple column querymssql层次结构一行到多列查询
【发布时间】:2015-04-22 07:35:23
【问题描述】:

我有一个这样的结构和记录的表

________________________________________
ID          | Name              |
-----------------------------------------
01          | Group Category    |
0101        | Category      |
010101      | Category Sub      |
01010101    | Category Sub Sub  |
-----------------------------------------

如何使用 mssql 生成查询结果,如下所示。

Column1         | Column2       | Column3       | Column4           |
-------------------------------------------------------------------------
Group Category  | Category Sub  | Category Sub  | Category Sub Sub  |
-------------------------------------------------------------------------

【问题讨论】:

    标签: sql-server hierarchy


    【解决方案1】:
    declare @t table (ID varchar(10),name varchar(20))
    insert into @t (ID,name) values ('01','Group Category'),('0101','Category'),
    ('010101','Category Sub'),('01010101','Category Sub Sub ')
    
    
    
    select 
    MAX(case when ID = '01' THEN name ELSE '' END )AS Column1,
    MAX(case when ID = '0101' THEN name ELSE '' END )AS Column2,
    MAX(case when ID = '010101' THEN name ELSE '' END )AS Column3,
    MAX(case when ID = '01010101' THEN name ELSE '' END )AS Column4 
    from @t
    

    【讨论】:

    • 感谢@mohan111 为您提供解决方案,它有效。但如果 ID 是动态的,例如 '0101 => Category'、'010102 => Category Sub Two' 等,则结果无法显示另一条记录,它只显示一个结果。
    【解决方案2】:

    你也可以像这样 PIVOT 你的桌子:

    SELECT [1] AS Column1, [2] AS Column2, [3] AS Column3, [4] AS Column4
    FROM
    (
        SELECT 
            Name, 
            ROW_NUMBER() OVER(ORDER BY ID) Seq 
        FROM [Table]
    ) t
    PIVOT
    (
        MAX(Name)
        FOR Seq IN ([1], [2], [3], [4])
    ) p
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-02
      • 2020-04-17
      • 2015-10-15
      • 1970-01-01
      • 2016-01-06
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多