繁体   English   中英

选择IF行到多列

[英]SELECT IF rows to multiple columns

您好,我正在为我的查询寻求帮助,该查询当前可以正常运行,但也无法显示数据。 我的表存储电话号码,相关字段是ID,电话类型和电话号码。

运行时,它按预期返回列idHOME PHONEWORK PHONECELL PHONE ,尽管它仅显示最后一个数字。 假设在给定的行中有一个家庭电话和一个工作电话号码...我只在该ID的“工作电话”列中获取数据。 如果连续有家用电话,办公电话和手机...我只能在“手机”列中获取数据。

我需要按电话类型在唯一列中的给定ID的所有电话号码的一行。 我希望这是有道理的,如果不是这样的话,查询应该可以让您了解我正在寻找的东西...谢谢

SELECT id,
(IF(phonetype = 'HOME PHONE', phonenumbers.phonenumber, '')) AS 'HOME PHONE',
(IF(phonetype = 'WORK PHONE', phonenumbers.phonenumber, '')) AS 'WORK PHONE',
(IF(phonetype = 'CELL PHONE', phonenumbers.phonenumber, '')) AS 'CELL PHONE'
FROM phonenumbers
GROUP BY id;

我要查询的表如下所示

id | name | phonetype | phonenumber

1  |  Jim  |  HOME PHONE | 0000000001        
1  |  Jim  |  WORK PHONE | 0000000002
2  |  Kim  |  HOME PHONE | 0000000003
2  |  Kim  |  WORK PHONE | 0000000004
2  |  Kim  |  CELL PHONE | 0000000005

我正在寻找的结果看起来像这样...

id | name | home phone | work phone | cell phone

 1 | Jim | 0000000001 | 0000000002 | 
 2 | Kim | 0000000003 | 0000000004 | 0000000005

假设每个ID仅针对每个ID具有一个电话号码:

SELECT a.id,
(SELECT phonenumbers.phonenumber FROM phonenumbers WHERE phonetype = 'HOME PHONE' AND id = a.id) AS 'HOME PHONE',
(SELECT phonenumbers.phonenumber FROM phonenumbers WHERE phonetype = 'WORK PHONE' AND id = a.id)  AS 'WORK PHONE',
(SELECT phonenumbers.phonenumber FROM phonenumbers WHERE phonetype = 'CELL PHONE' AND id = a.id)  AS 'CELL PHONE'
FROM phonenumbers a
GROUP BY a.id;

可能有帮助。 干杯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM