首页 > 解决方案 > MySql:由于 IF 条件填充一列?(见里面的例子;))

问题描述

我有一个如下所示的数据库表:

姓名 类型 品牌 参考
史密斯 伦敦 大的 索尼 1020
卡洛斯 里约 大的 诺基亚 050
弗朗索瓦 巴黎 小的 索尼 250

我需要得到:

姓名 大索尼 Big_诺基亚 小索尼 小诺基亚
史密斯 伦敦 1020
卡洛斯 里约 050
弗朗索瓦 巴黎 250

是否有可能在 IF 条件下填写右栏?

我真的不知道我是否可以这样做......

感谢您的宝贵帮助:-)

编辑:我尝试了 Forpas 的建议,但我只是添加

姓名 类型 品牌 参考
罗伯托 罗马 小的 索尼 100

但我没有更多的结果:(见这里

标签: mysqldatabaseif-statementselectconditional-statements

解决方案


您需要条件聚合:

SELECT Name, Town,
       MAX(CASE WHEN Type = 'Big' AND Brand = 'Sony' THEN Ref END) Big_Sony,
       MAX(CASE WHEN Type = 'Big' AND Brand = 'Nokia' THEN Ref END) Big_Nokia,
       MAX(CASE WHEN Type = 'Little' AND Brand = 'Sony' THEN Ref END) Little_Sony,
       MAX(CASE WHEN Type = 'Little' AND Brand = 'Nokia' THEN Ref END) Little_Nokia
FROM tablename
GROUP BY Name, Town 

请参阅演示
结果:

姓名 大索尼 Big_诺基亚 小索尼 小诺基亚
卡洛斯 里约 空值 50 空值 空值
弗朗索瓦 巴黎 空值 空值 250 空值
史密斯 伦敦 1020 空值 空值 空值

推荐阅读