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

问题描述 投票:0回答:2

我有一个构建为一对多的数据库,其中许多是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'使用不正确。

这可能吗?

mysql case one-to-many
2个回答
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

0
投票

您不能像动态那样动态更改列名。但是您可以尝试这样做

SELECT CASE WHEN Keyword = 'B' THEN 'KeyB' 
            WHEN Keyword = 'C' THEN 'KeyC' 
            WHEN Keyword = 'D' THEN 'KeyD' 
       END
© www.soinside.com 2019 - 2024. All rights reserved.