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

时间:2018-04-24 12:52:09

标签: mysql case one-to-many

我有一个构建为一对多的数据库,其中许多是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 个答案:

答案 0 :(得分:0)

您无法像动态一样动态更改列名。但是您可以尝试这个

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

答案 1 :(得分:0)

您使用条件聚合

 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