使用if/case语句按列(as)排序

ndh0cuux  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(297)

我有一个数据库,它被构造为一对多,其中多是多达3个“关键字”。例如:项目a可以包含关键字b、c和d中的任何/所有关键字。每个关键字都有一个与之对应的描述。我该如何选择该项具有的关键字的描述?
我的table看起来像:

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”使用不正确。
这有可能吗?

agyaoht7

agyaoht71#

使用条件聚合

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
fkaflof6

fkaflof62#

您不能像以前那样动态更改列名,但可以尝试此操作

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

相关问题