gpt4 book ai didi

sql - 查询中的可选连接(...如果主表字段为空,则忽略连接)

转载 作者:行者123 更新时间:2023-12-03 16:50:28 28 4
gpt4 key购买 nike

我的预算类似于以下示例,其中:

  • 有些预算因人而异,
  • 有些是针对整个团队的,而
  • 一种混合方式,其中一些分配给特定人员,而其余部分分配给团队的其他成员。

我可以将“预算”链接到“Summary_of_spend”,但我需要做的始终是链接年份和预算类型,但仅链接到预算中存在的人。如果预算中没有人,则默认将该组的金额相加。

我将如何为此创建一个联接?

(抱歉,以前没有遇到过这样的东西,也不知道叫什么,更不用说如何解决了。顺便说一句,我正在使用SQLite。)

Budgets
YEAR, TYPE, PERSON, AMOUNT
2010, Sales, Bob, 1000
2010, Sales, John, 1000
2010, Sales, Fred, 1000
2010, Marketing, Null, 5000
2010, Special, Null, 3000
2010, Special, Bob, 1000
2011, Sales_budget, Bob, 1100
2011, Sales_budget, John, 1100
2011, Sales_budget, Fred, 1100
2011, Marketing, Null, 6000
2010, Special, Null, 3000
2010, Special, Bob, 1000

Spend
DATE, BUDGET, PERSON, AMOUNT
01/01/2010, Sales, Bob, 50
02/01/2010, Marketing, Bob, 100
...

Summary_of_spend
YEAR, BUDGET, PERSON, AMOUNT
2010, Sales, Bob, 950
2010, Sales, John, 888
2010, Marketing, Bob, 500
2010, Marketing, John, 500
2010, Marketing, Fred, 500
2010, Special, Bob, 333
2010, Special, John, 222
2010, Special, Fred, 222
...

Budget_and_summary_of_spend
YEAR, BUDGET_TYPE, PERSON, BUDGET_AMOUNT, SPEND_AMOUNT
2010, Sales, Bob, 1000, 950
2010, Sales, John, 1000, 888
2010, Sales, Fred, 1000, 0
2010, Marketing, Null, 5000, 1500
2010, Special, Null, 3000, 444
2010, Special, Bob, 1000, 333
...

最佳答案

查看不同类型的 JOIN:LEFT OUTER JOIN 可能是您需要的。对于左表中的每一行,左连接至少包含一行;如果右表中不存在匹配项,则其所有字段都设置为 NULL。如果存在一个或多个匹配项,则其行为与内连接完全一样。

由于 SUM 函数忽略 NULL 值,因此对结果进行分组和求和将按预期工作。

关于sql - 查询中的可选连接(...如果主表字段为空,则忽略连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9532401/

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