gpt4 book ai didi

SQL 连接表 - 每个 'on' 匹配字段连接表上的多行合并为一行?

转载 作者:行者123 更新时间:2023-12-01 16:22:15 25 4
gpt4 key购买 nike

我从两个表中提取数据。这是我所拥有的最小娱乐:

Select
Jobs.Job_Number,
Jobs.Total_Amount,
Job_Charges.Charge_Code,
Job_Charges.Charge_Amount
From
DB.Jobs
Inner Join
DB.Job_Charges
On
Jobs.Job_Number = Job_Charges.Job_Number;

因此,我最终会为每个 Job_Number 的每个不同的 Charge_Code 和 Charge_Amount 获得一行。该行的其他所有内容均相同。是否有可能让它返回更像的东西:

Job_Number - Total_Amount - Charge_Code[1] - Charge_Amount[1] - Charge_Code[2] - Charge_Amount[2] 

等等?

这样,它会为每个作业编号创建一行,并且在同一行中包含每个关联的费用和金额。我一直在阅读 W3,但无法确定这是否可能。有什么帮助,谢谢!

最佳答案

要将结果集转换为固定数量的列,您可以使用 row_number() 和条件聚合:

select
job_number,
total_amount,
max(case when rn = 1 then charge_code end) charge_code1,
max(case when rn = 1 then charge_amount end) charge_amount1,
max(case when rn = 2 then charge_code end) charge_code2,
max(case when rn = 2 then charge_amount end) charge_amount2,
max(case when rn = 3 then charge_code end) charge_code3,
max(case when rn = 3 then charge_amount end) charge_amount3
from (
select
j.job_number,
j.total_amount,
c.charge_code,
c.charge_amount,
row_number() over(partition by job_number, total_amount order by c.charge_code) rn
from DB.Jobs j
inner join DB.Job_Charges c on j.job_number = c.job_number
) t
group by job_number, total_amount

以上查询最多提供 3 个费用代码和金额(按作业代码排序)。您可以使用更多的 max(case ...) 表达式扩展 select 子句以处理更多的表达式。

关于SQL 连接表 - 每个 'on' 匹配字段连接表上的多行合并为一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59887202/

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