gpt4 book ai didi

sql - 从不同的另一个 View 创建一个 View 并计算一些字段

转载 作者:搜寻专家 更新时间:2023-10-30 20:33:22 25 4
gpt4 key购买 nike

我有两个表(Daily_logSix_months_Log),第一个(Daily_log)包含每天的数据记录,第二个( Six_months_Log) 它由六个月的数据组成,前六个月以1显示,后六个月以2显示。但是,它们都是相同的,但是对于 [Six_months_Log] 表中的每条记录,我们在 [Daily_log] 表中有很多记录。所以我想为 [Six_months_Log] 表中的每个并行记录计算 [Daily_log] 表中每六个月记录的平均值,最后[Daily_log].[Value]的平均值乘以其他表的[Six_months_Log].[Value]的结果:

Each row of Table: [Daily_log].[Value] x [Six_months_Log].[Value]

Daily_log 中我们有:

[Code_Type]: 602 是每日代码

[Half]: 1 是一年的前六个月,2 是一年的后六个月

[位置]:每个地方都有一个唯一码

=============================| Daily_log |==========================
+-------+-----------+------------+---------+-------+--------+------+
| ID | Location | Date |Code_Type| Year | Value | Half |
+-------+-----------+------------+---------+-------+--------+------+
| 1200 | 20200 |2015/01/01 | 602 | 2015 | 550 | 1 |
| 1202 | 20200 |2015/01/02 | 602 | 2015 | 680 | 1 |
| 1203 | 20200 |2015/01/03 | 602 | 2015 | 780 | 1 |
| ... |... |... | ... | ... | ... | ... |
| 1420 | 20200 |2015/06/01 | 602 | 2015 | 260 | 2 |
| 1421 | 20200 |2015/06/02 | 602 | 2015 | 790 | 2 |
| 1422 | 20200 |2015/06/03 | 602 | 2015 | 640 | 2 |
| ... |... |... | ... | ... | ... | ... |
| 1420 | 15300 |2017/11/01 | 602 | 2017 | 470 | 2 |
| 1421 | 15300 |2017/11/02 | 602 | 2017 | 990 | 2 |
| 1422 | 15300 |2017/11/03 | 602 | 2017 | 140 | 2 |
| ... |... |... | ... | ... | ... | ... |
+-------+-----------+------------+---------+-------+--------+------+

Six_months_Log 中,我们有:

[Code_Type]: 402 是 Six_months 代码

[Half]: 1 是一年的前六个月,2 是一年的后六个月

[位置]:每个地方都有一个唯一码

========================| Six_months_Log |==========================
+-------+-----------+------------+---------+-------+--------+------+
| ID | Location | Date |Code_Type| Year | Value | Half |
+-------+-----------+------------+---------+-------+--------+------+
| 201 | 20200 |2015/01/01 | 402 | 2015 | 50 | 1 |
| 202 | 20200 |2015/07/01 | 402 | 2015 | 80 | 2 |
| ... |... |... | ... | ... | ... | ... |
| 320 | 20201 |2015/01/01 | 402 | 2015 | 60 | 1 |
| 321 | 20201 |2015/07/01 | 402 | 2015 | 90 | 2 |
| ... |... |... | ... | ... | ... | ... |
| 820 | 15300 |2017/01/01 | 402 | 2017 | 70 | 1 |
| 821 | 15300 |2017/07/01 | 402 | 2017 | 20 | 2 |
| ... |... |... | ... | ... | ... | ... |
+-------+-----------+------------+---------+-------+--------+------+

最佳答案

你在找这样的东西吗?

select sml.*, dl.avg_value, dl.avg_value * sml.value
from six_months_log sml outer apply
(select avg(dl.value) as avg_value
from daily_log dl
where dl.location = sml.location and
dl.date <= sml.date and
dl.date > dateadd(month, -6, sml.date)
) dl;

为了提高性能,您需要在 daily_log(location, date, value) 上建立索引。

关于sql - 从不同的另一个 View 创建一个 View 并计算一些字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57041147/

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