我在訪問資料庫中有一個表,其中包含以下欄位:“期間”(如 YYYYMM,例如 202111、202112、202201 等)、ID(“短文本欄位”識別符號)、儀器(“短文本欄位” ' 描述一個工具 ID 鍵),最后,一個美元金額作為欄位“Volume Balance”。顯然,在現實中,除了 3 個,還有更多的 ID 和不同的儀器鍵。2,如下例所示。現在的目標是計算每個連續兩個月的簡單平均值,如底部表格(示例性數字,單位為美元)每個 ID 和每個工具。也就是說,一個ID在同一月份可以有多個不同Instrument key的條目(在下表中,ID 1和3在兩個不同的Instrument A和B中都有余額,而ID 2在Instrument B中只有一個余額) .
輸入-->
| 時期 | ID | 儀器 | 音量平衡 |
|---|---|---|---|
| 202101 | 1 | 一種 | 1 |
| 202101 | 2 | 乙 | 2 |
| 202101 | 3 | 一種 | 3 |
| 202102 | 1 | 一種 | 4 |
| 202102 | 1 | 乙 | 5 |
| 202102 | 2 | 乙 | 6 |
| 202102 | 3 | 一種 | 7 |
| 202103 | 1 | 一種 | 8 |
| 202103 | 2 | 乙 | 9 |
| 202103 | 3 | 一種 | 10 |
| 202103 | 3 | 乙 | 11 |
期望的結果(本質上是一個美化的資料透視表)-->
| 時期 | ID | 儀器 | 平均交易量平衡 | 評論 |
|---|---|---|---|---|
| 202101 | 1 | 一種 | 0.5 | (Jan balance / 2)因為儀器和 ID 組合沒有先前的資料點 |
| 202101 | 2 | 乙 | 1 | (Jan balance / 2)因為儀器和 ID 組合沒有先前的資料點 |
| 202101 | 3 | 一種 | 1.5 | (Jan balance / 2)因為儀器和 ID 組合沒有先前的資料點 |
| 202102 | 1 | 一種 | 2.5 | (Jan Feb balance for this specific ID & Instrument combo / 2) |
| 202102 | 1 | 乙 | 2.5 | (Feb balance / 2)因為儀器和 ID 組合沒有先前的資料點 |
| 202102 | 2 | 乙 | 4 | (Jan Feb balance for this specific ID & Instrument combo / 2) |
| 202102 | 3 | 一種 | 5 | (Jan Feb balance for this specific ID & Instrument combo / 2) |
| 202103 | 1 | 一種 | 6 | (Feb Mar balance for this specific ID & Instrument combo / 2) |
| 202103 | 2 | 乙 | 7.5 | (Jan Feb balance for this specific ID & Instrument combo / 2) |
| 202103 | 3 | 一種 | 8.5 | (Jan Feb balance for this specific ID & Instrument combo / 2) |
| 202103 | 3 | 乙 | 5.5 | (Mar balance / 2)因為儀器和 ID 組合沒有先前的資料點 |
我玩過 DAvg 函式,但連續的周期截止和分組對我來說是致命的。感謝您的任何幫助!
uj5u.com熱心網友回復:
使用自LEFT聯接:
SELECT t1.*,
(t1.[Volume Balance] Nz(t2.[Volume Balance])) / 2 AS [Average Volume Balance]
FROM (
SELECT * FROM tablename
UNION ALL
SELECT Format(DateAdd('m', 1, CDate(Format(MAX(Period) '01', '0000-00-00'))), 'yyyymm'), ID, Instrument, 0
FROM tablename
GROUP BY ID, Instrument
) AS t1 LEFT JOIN tablename AS t2
ON DateAdd('m', 1, CDate(Format(t2.Period '01', '0000-00-00'))) = CDate(Format(t1.Period '01', '0000-00-00'))
AND t2.ID = t1.ID AND t2.Instrument = t1.Instrument
ORDER BY t1.ID, t1.Instrument, t1.Period;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/429067.html
上一篇:MicrosoftAccess查詢中的計算欄位在具有不同資料的不同計算機上突然失敗
下一篇:獲取表的所有id的一對的最大值
