代码之家  ›  专栏  ›  技术社区  ›  rborum

使用IF/CASE语句排序为列(AS)

  •  0
  • rborum  · 技术社区  · 8 年前

    我有一个一对多的数据库,其中多是多达3个“关键字”。例如:项目A可能有任何/所有关键字B、C和D。每个关键字都有与其对应的描述。我将如何选择该项目所具有的关键字的描述?

    我的桌子看起来像:

    Item----Keyword----Description    
    A-------B--------------desc1    
    A-------C--------------desc2
    

    如果项目A有关键字C和D,并且C的描述是“desc1”,D的描述是“desc2”,我希望我的输出是:

    Item---KeyB---KeyC---KeyD
    
    A------NULL---desc1---desc2
    

    很抱歉,格式不好,我不知道这里怎么做表格。我试过了

    SELECT
    CASE
    WHEN Keyword = 'B' THEN Description AS 'KeyB'
    WHEN Keyword = 'C' THEN Description AS 'KeyC'
    WHEN Keyword = 'D' THEN Description AS 'KeyD'
    END
    

    但是,这给了我一个错误,因为“AS”使用不正确。

    这可能吗?

    2 回复  |  直到 8 年前
        1
  •  0
  •   Juan Carlos Oropeza    8 年前

    使用条件聚合

     SELECT item, 
            MAX( CASE WHEN  Keyword = 'B' THEN Description END) as KeyB,
            MAX( CASE WHEN  Keyword = 'C' THEN Description END) as KeyC,
            MAX( CASE WHEN  Keyword = 'D' THEN Description END) as KeyD
     FROM YourTable
     GROUP BY  item
    
        2
  •  0
  •   Juan Carlos Oropeza    8 年前

    您不能像以前那样动态更改列名。但你可以试试这个

    SELECT CASE WHEN Keyword = 'B' THEN 'KeyB' 
                WHEN Keyword = 'C' THEN 'KeyC' 
                WHEN Keyword = 'D' THEN 'KeyD' 
           END