gpt4 book ai didi

sql - 构造 SQL 查询以使用来自另一个表的数据填充一个表

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

这对于有 SQL 经验的人来说是一个挑战(在这种情况下是 MS-Access)

我有 2 张 table :holdingsvaluations .

holdings 包含特定帐户在给定日期持有的所有 Assets 及其各自的值(value)。这些是字段:
id {主键/自动公司},accountid {int}, holdingdate {日期}, holdingid {int}, holdingvalue {双}

valuations 包含在给定日期特定账户持有的总和。这些是字段:
id {主键/自动公司},accountid {int}, valuationdate {日期}, valuation {双}。

2012 年 1 月之后,每 valuationvaluations表我在holdings中也有相应的藏品集合其总和值 = 估值的表。

在此日期之前,我只有估值,没有持股。

例如在 valuations我会有这样的记录:

id  |  accountid  |  valuationdate  |  valuation
------------------------------------------------
56 | 12345 | 2013-03-31 | 2000000

相应地,我将拥有这些 Assets (在此日期,此帐户的总和为 valuation):
id  |  accountid  |  holdingdate  |  holdingid  |  holdingvalue
---------------------------------------------------------------
250 | 12345 | 2013-03-31 | 16 | 1000000
251 | 12345 | 2013-03-31 | 38 | 500000
252 | 12345 | 2013-03-31 | 27 | 500000

如上所述,在某些情况下,我只有 valuations 中的记录。表,我没有相应的持股。

为了简化/优化我的数据库结构,我想消除 valuations表,因为它本质上是复制应该出现在 holdings 中的信息。通过简单地将给定日期的账户 Assets 相加来计算表格。为了获得客户 future 的估值,我可以简单地将他们在给定日期的持有量相加,从而不需要 valuations表完全。

我的目标是填充 holdings包含来自 valuations 的数据的表格对于不存在的日期。

本质上,如果帐号/估值日期组合不存在持有量,则在该帐号/估值日期的持有量表中插入一个虚拟持有量 ( holdingid = 999),等于该日期的估值。

是否可以构造一个 SQL 查询来实现上述目的?

最佳答案

这些中的任何一个都应该有效:

insert into holdings (accountid, holdingdate, holdingid, holdingvalue) 
select v.accountid, v.valuationdate, 999, v.valuation
from valuations v
left join holdings h on h.accountid=v.accountid and h.holdingdate=v.valuationdate
where h.holdingdate is null

EDIT: Corrected the second version to use a correlated WHERE clause.

insert into holdings (accountid, holdingdate, holdingid, holdingvalue)
select v.accountid, v.valuationdate, 999, v.valuation
from valuations v
where v.valuationdate not in (select distinct holdingdate from holdings where accountid=v.accountid)

关于sql - 构造 SQL 查询以使用来自另一个表的数据填充一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17989409/

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