我的SQL很生锈。我正在尝试转换此表:
+----+-----+--------------+-------+
| ID | SIN | CONTACT | TYPE |
+----+-----+--------------+-------+
| 1 | 737 | b@bacon.com | email |
| 2 | 760 | 250-555-0100 | phone |
| 3 | 737 | 250-555-0101 | phone |
| 4 | 800 | 250-555-0102 | phone |
| 5 | 850 | l@lemon.com | email |
+----+-----+--------------+-------+
进入此表:
+----+-----+--------------+-------------+
| ID | SIN | PHONE | EMAIL |
+----+-----+--------------+-------------+
| 1 | 737 | 250-555-0101 | b@bacon.com |
| 2 | 760 | 250-555-0100 | |
| 4 | 800 | 250-555-0102 | |
| 5 | 850 | | l@lemon.com |
+----+-----+--------------+-------------+
我写了这个查询:
SELECT *
FROM (SELECT *
FROM people
WHERE TYPE = 'phone') phoneNumbers
FULL JOIN (SELECT *
FROM people
WHERE TYPE = 'email') emailAddresses
ON phoneNumbers.SIN = emailAddresses.SIN;
产生:
+----+-----+--------------+-------+------+-------+-------------+--------+
| ID | SIN | CONTACT | TYPE | ID_1 | SIN_1 | CONTACT_1 | TYPE_1 |
+----+-----+--------------+-------+------+-------+-------------+--------+
| 2 | 760 | 250-555-0100 | phone | | | | |
| 3 | 737 | 250-555-0101 | phone | 1 | 737 | b@bacon.com | email |
| 4 | 800 | 250-555-0102 | phone | | | | |
| | | | | 5 | 850 | l@lemon.com | email |
+----+-----+--------------+-------+------+-------+-------------+--------+
我知道我可以选择所需的列,但SIN列不完整。我似乎记得我应该第三次加入表以获得完整的SIN列,但是我不记得怎么做。
如何生成目标表(ID,SIN,PHONE,EMAIL)?
编辑和澄清:到目前为止,我非常感谢我收到的答案,但是作为SQL新手,我不熟悉您所使用的技术(条件语句,条件聚合和数据透视)。使用JOIN和SELECT不能做到这一点吗?请原谅我对此事的无知。(并不是我对高级技术不感兴趣,但我不想太快地采取行动。)
解决此问题的一种方法是条件聚合:
select min(ID), SIN,
max(case when type = 'phone' then contact end) as phone,
max(case when type = 'email' then contact end) as email
from people t
group by sin;
我在excel中有一个列,其中包含名字、姓氏和职位名称的混合。唯一可以观察到的模式是——在每一组3行中,每第1行是名字,第2行是姓氏,第3行是工作标题。我想创建3个不同的列,并隔离此数据示例数据: 我想要:约翰,布什,经理,作为一行,分别放在名字,姓氏和职务下面的三个不同的栏中。像- 我们如何才能完成这项任务?
问题内容: 我使用PostgreSQL9.4我有一个名为表列,并希望写一个查询将返回的时间范围在两个单独的列和。我试图像数组一样处理它,但是它不起作用: 当前表: 所需表: 问题答案: 使用 和。 像这样: 或您的示例:
问题内容: 我有以下数据框: 现在,我想创建另一个列,其值在和之间最大。因此,我希望将其作为输出: 我试过了 : 但是,这会引发语法错误。我没有任何方法可以在熊猫中做到这一点。我的实际数据框太复杂了,因此我想为此提供一个通用的解决方案。有任何想法吗? 问题答案: 您可以使用: 解决方案: 或更简单的发现:
本文向大家介绍js中DOM三级列表(代码分享),包括了js中DOM三级列表(代码分享)的使用技巧和注意事项,需要的朋友参考一下 效果图: 代码如下: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!
问题内容: 我有一个带有一列的数据框,我想将其分为两列,其中一列标题为,另一列为 我的数据框df如下所示: 我不知道如何使用以达到分割行单元的目的。我可以用来添加一个新列,并用填充它hello。有任何想法吗? 问题答案: 对于以下简单情况: 我有一个带有定界符的文本列,我想要两列 最简单的解决方案是: 或者,你可以使用以下方法自动为拆分的每个条目创建一个带有一列的DataFrame: 如果字符串的
问题内容: 可以说我有以下格式的JSON: 我试图避免自定义反序列化器,并尝试将上述JSON(称为Wrapper.java)反序列化为Java POJO。“类型”字段指示“对象”反序列化,即。type = foo表示使用Foo.java反序列化“ object”字段。(如果type = Bar,则使用Bar.java反序列化对象字段)。元数据/所有者将始终使用相同的反序列化方式,每个方法都使用一个