gpt4 book ai didi

sql - 甲骨文 11g : How to union an oracle table with itself?

转载 作者:行者123 更新时间:2023-12-01 08:13:26 24 4
gpt4 key购买 nike

我有一张如下所示的表格:

date          code                name    score         set
09/09/12 967873 Team A 24 1
09/09/12 967873 Team B 22 1
09/09/12 967873 Team A 21 2
09/09/12 967873 Team B 16 2
02/04/12 965454 Team X 21 1
02/04/12 965454 Team Y 19 1
02/04/12 965454 Team X 21 2
02/04/12 965454 Team Y 19 2

你猜对了!这是一场 Volley 比赛!但是,我希望我的输出在一行中。例如:
date           code               Teams                 Set-1    Set-2     Set-3
09/09/12 967873 Team A VS.Team B 24-22 21-16 -
and so on....
**Notice that the game could have a third set as well
我需要某种自连接来将上述格式细化为更易于用户查看的格式...如果您需要更多详细信息,请告诉我。

谢谢,

最佳答案

查询可能如下所示:

with matches as (
select "DATE", code, name,
max(case when "SET" = 1 then score end) score_1,
max(case when "SET" = 2 then score end) score_2,
max(case when "SET" = 3 then score end) score_3,
row_number() over(partition by "DATE", code order by name) team_no
from games
group by "DATE", code, name
)
select a."DATE", a.code, a.name || ' vs. ' || b.name teams,
a.score_1 || '-' || b.score_1 set_1,
a.score_2 || '-' || b.score_2 set_2,
a.score_3 || '-' || b.score_3 set_3
from matches a
join matches b on a."DATE" = b."DATE" and a.code = b.code
where a.team_no = 1 and b.team_no = 2;

date 和 set 是相当不幸的列名。

查询分 3 个步骤进行:
  • 汇总记录以创建每个团队和比赛的单行。在该过程中,分数被分配给三列 set_1、set_2、set_3 之一。
  • 行号被分配给每一行,每个匹配从 1 开始。结果是一个团队被分配了 1,另一个团队被分配了 2(列 team_no)。
  • 结果表与自身相连,左侧为没有的团队。 1 和右侧的团队没有。 2 使用匹配(日期和代码)作为连接条件。结果是每场比赛排成一行,显示两支球队的名称和分数。
  • 关于sql - 甲骨文 11g : How to union an oracle table with itself?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13257632/

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