gpt4 book ai didi

在新列中求和和分组的 SQL 查询

转载 作者:行者123 更新时间:2023-12-04 23:43:51 25 4
gpt4 key购买 nike

我有两个表,其中包含我想要比较的值,但我还没有完全弄清楚如何正确编写代码。

这是我的两个表:

表 1(每月运行的成本)

id    amount     name     start                  end
1 500 Text 1 2013-09-01 00:00:00 2013-10-31 00:00:00
2 800 Text 2 2013-10-01 00:00:00 2013-10-31 00:00:00
3 200 Text 3 2013-09-01 00:00:00 2013-11-30 00:00:00

表 2(发票)

id    table1id   amount   month
51 1 100 201309
52 1 300 201309
53 1 500 201310
54 2 900 201310
55 3 300 201309
56 3 200 201310
57 3 250 201311

我想要的是一个看起来像这样的表格:

Table1id name    SepTable2  SepTable1  OctTable2  OctTable1  NovTable2  NovTable1
1 Text 1 400 500 500 500
2 Text 2 900 800
3 Text 3 300 200 200 200 250 200

到目前为止,我已经设法做到了这一点:

Table1id   name    SepTable1  OctTable1  NovTable1
1 Text 1 500 500 500
2 Text 2 800
3 Text 3 200 200 200

代码如下:

SELECT 
table1.id AS table1id,
table1.name,

case when table1.start < '2013-09-30 23:59:59'
and table1.end > '2013-09-01 00:00:01'
then table1.amount
else '' end AS SepTable1,

case when table1.start < '2013-10-31 23:59:59'
and table1.end > '2013-10-01 00:00:01'
then table1.amount
else '' end AS OctTable1,

case when table1.start < '2013-11-30 23:59:59'
and table1.end > '2013-11-01 00:00:01'
then table1.amount
else '' end AS NovTable1

from Table1

INNER JOIN Table2 ON Table1.id = Table2.Table1id

我需要一种方法来获取 Table2 中所有条目的总和,其中 Table1id 相同且月份相同,以便分组和求和并进入新列中的正确位置...而且我不知道如何正确处理。我在想 GROUP BY 和 SUM 会以某种方式参与其中,但我在这里很迷茫,我已经尝试用谷歌搜索几个小时但没有找到好的结果(我可能使用了错误的搜索字符串)。

如果有人能帮我解决这个问题,或者给我一些可以指引我正确方向的建议,我将不胜感激。

最佳答案

好吧,根据您不关心年份的评论,这将为您提供所需的结果:

SELECT c.id, c.name,
SUM(CASE WHEN i.month = 201309 THEN
COALESCE(i.amount, 0)
END) SepInvoices,
MAX(CASE WHEN c.start < '2013-10-01 00:00:00' AND c.end >= '2013-09-01 00:00:00' THEN
c.amount
END) SepCosts
FROM costs c
LEFT JOIN invoices i ON c.id = i.costid
GROUP BY c.id, c.name

当然,对其他月份应用相同的逻辑。

参见 fiddle here .

关于在新列中求和和分组的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20356682/

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