mysql - MySql:由于 IF 条件填充一列?(见里面的例子;))
问题描述
我有一个如下所示的数据库表:
姓名 | 镇 | 类型 | 品牌 | 参考 |
---|---|---|---|---|
史密斯 | 伦敦 | 大的 | 索尼 | 1020 |
卡洛斯 | 里约 | 大的 | 诺基亚 | 050 |
弗朗索瓦 | 巴黎 | 小的 | 索尼 | 250 |
我需要得到:
姓名 | 镇 | 大索尼 | Big_诺基亚 | 小索尼 | 小诺基亚 |
---|---|---|---|---|---|
史密斯 | 伦敦 | 1020 | |||
卡洛斯 | 里约 | 050 | |||
弗朗索瓦 | 巴黎 | 250 |
是否有可能在 IF 条件下填写右栏?
我真的不知道我是否可以这样做......
感谢您的宝贵帮助:-)
编辑:我尝试了 Forpas 的建议,但我只是添加
姓名 | 镇 | 类型 | 品牌 | 参考 |
---|---|---|---|---|
罗伯托 | 罗马 | 小的 | 索尼 | 100 |
但我没有更多的结果:(见这里
解决方案
您需要条件聚合:
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 | 空值 | 空值 | 空值 |