我在這里問這個問題之前搜索了很多,但找不到與我的問題相關的任何內容。
我目前正在嘗試從我的 Oracle SQL 資料庫中檢索一個特定的值(我們稱之為“參考期間的總和”)。
我有不同的元素鏈接到一個組(例如,元素 A 來自第 1 組,元素 B 來自第 2 組,元素 C 來自第 3 組等),并且每個元素都具有以下格式的創建日期: YYYYMM。
如何創建一個附加列,其中包含與該行中的元素來自同一組且在元素創建后的最后 12 個月內創建的所有元素的總和?
假設我當前的表是這樣的:
| Element_Id | Creation_Date | Group |
| A | 202101 | 1 |
| B | 202101 | 2 |
| C | 202101 | 3 |
| D | 202102 | 1 |
| E | 202001 | 1 |
| F | 202002 | 1 |
| G | 202003 | 1 |
我想要的結果是:
| Element_Id | Creation_Date | Group | Sum_In_Reference_Period |
| A | 202101 | 1 | 3 |
| B | 202101 | 2 | 1 |
| C | 202101 | 3 | 1 |
| D | 202102 | 1 | 3 |
| E | 202001 | 1 | 1 |
| F | 202002 | 1 | 2 |
| G | 202003 | 1 | 3 |
先感謝您。
uj5u.com熱心網友回復:
使用視窗分析函式:
SELECT t.*,
COUNT(*) OVER (
PARTITION BY grp
ORDER BY TO_DATE(Creation_Date || '01', 'YYYYMMDD')
RANGE BETWEEN INTERVAL '11' MONTH PRECEDING AND INTERVAL '0' MONTH FOLLOWING
) AS sum_in_reference_period
FROM table_name t
ORDER BY element_id
其中,對于您的示例資料:
CREATE TABLE table_name (Element_Id, Creation_Date, Grp) AS
SELECT 'A', 202101, 1 FROM DUAL UNION ALL
SELECT 'B', 202101, 2 FROM DUAL UNION ALL
SELECT 'C', 202101, 3 FROM DUAL UNION ALL
SELECT 'D', 202102, 1 FROM DUAL UNION ALL
SELECT 'E', 202001, 1 FROM DUAL UNION ALL
SELECT 'F', 202002, 1 FROM DUAL UNION ALL
SELECT 'G', 202003, 1 FROM DUAL;
輸出:
ELEMENT_ID 創立日期 玻璃鋼 SUM_IN_REFERENCE_PERIOD 一種 202101 1 3 乙 202101 2 1 C 202101 3 1 D 202102 1 3 乙 202001 1 1 F 202002 1 2 G 202003 1 3
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/325110.html
上一篇:多個ID位于同一列中的查找名稱
下一篇:SQL查詢從一個到多個表回傳結果
