【发布时间】:2012-07-13 05:33:33
【问题描述】:
有谁知道如何根据多列表的单列删除和合并重复项以创建“垂直摘要”。
I.E) 尝试从表 A 构建表 B
Table A:
Person Language
Bob English
Sarah French
John Chinese
Bob French
Sarah English
Sarah Chinese
Table B (RESULT):
Person English French Chinese
Bob Y Y (null)
Sarah Y Y Y
John (null) (null) Y
我最初的想法是: 从数据中创建表 A,然后执行以下操作:
Create table summary as
Select person, (case when language = 'English' then 'Y') as English, (case when language = 'French' then 'Y') as French, (case when language = 'Chinese' then 'Y') as Chinese
From Table A;
最后对汇总表进行选择不同。 然而,逻辑是错误的,特别是因为 distinct 在所有列中都这样做,但我只想要不同的人名。
我脑海中想到的另一个选项是创建一个表,其中仅包含不同的人名和空列英语、法语和中文。然后使用更新语句通过匹配表 A 来填充它们。
有没有人知道更好的方法/我如何实现这一点。我仍处于学习 Oracle 的早期阶段(尤其是在循环方面),我们将不胜感激。
谢谢!
【问题讨论】:
标签: sql oracle merge duplicates distinct