gpt4 book ai didi

sql - Oracle 11g - 合并单列重复项以创建垂直汇总

转载 作者:行者123 更新时间:2023-12-04 05:39:20 25 4
gpt4 key购买 nike

有谁知道如何根据多列表的单列删除和合并重复项以创建“垂直摘要”。

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;

最后做了一个select不同的汇总表。
然而,逻辑是错误的,特别是因为 distinct 在所有列中都是如此,但我只想要不同的人名。

我在脑海中想到的另一个选项是创建一个表格,其中只填充不同的人名和空列英语、法语和中文。然后使用更新语句通过匹配表 A 来填充它们。

有没有人知道更好的方法/我如何实现这一点。我仍处于学习 Oracle(特别是关于循环)的早期阶段,任何帮助将不胜感激。

谢谢!

最佳答案

Oracle 有一个 Decode function .

但你要找的是 pivot

WITH pivot_data AS (
SELECT Person, Language
FROM A
)
SELECT *
FROM pivot_data
PIVOT (
Count(*) --<-- pivot_clause
FOR Language --<-- pivot_for_clause
IN ('English', 'French', 'Chinese') --<-- pivot_in_clause
);

关于sql - Oracle 11g - 合并单列重复项以创建垂直汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11469256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com