【问题标题】:How can I split a column into different columns如何将一列拆分为不同的列
【发布时间】:2015-02-03 06:07:05
【问题描述】:

我有 varchar 列,其中包含 3 种类型的值。我想根据值的类型将它分成 3 列。例如我的专栏是, 值的工厂名称

  1. 阿南塔
  2. 阿南塔
  3. ATL
  4. ESBL
  5. ATL
  6. ATL

当 FactoryName 的值分别为“ANANTA”、“ATL”和“ESBL”时,我想要 3 列分别命名为 Factory1、Factory2、Factory3。结果应该是这样的

  • 工厂1
  • 阿南塔
  • 阿南塔
  • Factory2

  • ATL
  • ATL
  • ATL

    我可以使用 case 或其他东西来做到这一点吗?如何?

【问题讨论】:

    标签: sql database sql-server-2012


    【解决方案1】:

    使用Pivot转置数据

    CREATE TABLE #comp
      (
         name VARCHAR(50)
      )
    
    INSERT #comp
    VALUES ('ANANTA'),('ANANTA'),('ATL'),
           ('ESBL'),('ATL'),('ATL')
    
    SELECT [ANANTA] AS factory1,
           [ATL]    AS factory2,
           [ESBL]   AS factory3
    FROM   #comp
           PIVOT (Max(name)
                 FOR name IN ([ANANTA],
                              [ATL],
                              [ESBL])) piv 
    

    conditional Aggregate

    select  max(case when name = 'ANANTA' then name end) factory1,
            max(case when name = 'ATL' then name end) factory2,
            max(case when name = 'ESBL' then name end) factory3 
    from #comp
    

    更新:如果您不想将结果显示为单行,请删除 max 聚合

    SELECT CASE WHEN name = 'ANANTA' THEN name END factory1,
           CASE WHEN name = 'ATL' THEN name END factory2,
           CASE WHEN name = 'ESBL' THEN name END factory3
    FROM   #comp 
    

    【讨论】:

    • 但它只显示 1 行。我希望将第一列的所有值分成 3 列。
    • @Mimi 那么你想如何格式化结果呢?你能用表格格式的预期输出来编辑问题吗
    猜你喜欢
    • 2022-12-20
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    相关资源
    最近更新 更多