我正在尝试从包含帐号、电话号码和电子邮件的表格中提取信息。但是,我不确定设计这张表的人在想什么。 table 是这样摆的。
账户ID |电话类型 |电话号码
现在您可能会问电子邮件存储在哪里。它们存储在电话号码下。此数据库的示例。
AccountID | PhoneType | PhoneNumber
123456 WORK 111-1111
123456 MOBILE 111-4567
123456 EMAIL exampleemail@email.com
222222 EMAIL stupid@table.com
我不确定如何执行此操作,因为我对 SQL 只有基本的了解。理想情况下,我们想要这样的东西:
AccountID | WorkPhone | MobilePhone | Email
123456 111-1111 111-4567 example@email.com
222222 stupid@table.com
执行此操作的好方法是什么?我已经尝试了几个 IF 语句,但没有一个能让我达到我想要的效果。
最佳答案
像这样的东西会起作用。如果您有更多电话类型,这可能会很长:
编辑:根据 xQbert 的回复,他是正确的。您需要在帐户 ID 上添加一个分组依据,否则您仍然会得到多行。
SELECT
AccountId
, MAX(CASE WHEN PhoneType = 'WorkPhone' THEN
PhoneNumber
ELSE
NULL
END) AS 'WorkPhone'
, MAX(CASE WHEN PhoneType = 'MobilePhone' THEN
PhoneNumber
ELSE
NULL
END) AS 'MobilePhone'
, MAX(CASE WHEN PhoneType = 'Email' THEN
PhoneNumber
ELSE
NULL
END) AS 'Email'
FROM
MyTable
GROUP BY AccountId
关于mysql - 唯一行的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47779502/