[英]Oracle DB. How to get a running total from multiple columns on one record
我有一個存儲唯一 ID 和 12 個每月值的表。
我需要為前端提供一個程序,在第一行為他們提供每月值,在第二行為特定的唯一 ID 提供運行總計。 (有關所需輸出,請參見下表)。
第一部分很簡單,因為它只是一個簡單的選擇語句,運行總數是什么讓我失望。
我調查了 SUM OVER ,但這似乎只有在您需要在一列上運行總計時才有效。 但我有 12 個不同的列有數據。
我不想做的只是一個簡單的 Jan22, Jan22+Feb22, Jan22+Feb22+Mar22。
無論如何要解決這個問題? 謝謝。
編輯:表定義
唯一身份 | 1月22日 | 2月22日 | 3月22日 |
---|---|---|---|
1 | 5000 | 1000 | 3000 |
2 | 3000 | 2000 | 8000 |
期望的輸出。 前端團隊調用該過程並發送唯一 ID 1 作為參數。
下面是我想要展示的。
1月22日 | 2月22日 | 3月22日 |
---|---|---|
5000 | 1000 | 3000 |
5000 | 6000 | 9000 |
我需要為前端提供一個程序,在第一行為他們提供每月值,在第二行為特定的唯一 ID 提供運行總計。
這不是數據庫問題; 這是一個顯示問題。 您應該傳遞一個包含 12 列的單行,每個月一個,然后如果它需要顯示在兩行中,那么累積總數應該由前端在顯示時生成,並且不應該在數據庫中計算。
如果您必須在數據庫中執行此操作(不要):
我不想做的只是一個簡單的 Jan22, Jan22+Feb22, Jan22+Feb22+Mar22。
不幸的是,這就是它應該做的方式。
獲取唯一 id 的所有列,然后使用UNION ALL
再次獲取行並累積值:
SELECT Jan22,
Feb22,
Mar22
FROM table_name
WHERE unique_id = 1
UNION ALL
SELECT Jan22,
Jan22 + Feb22,
Jan22 + Feb22 + Mar22
FROM table_name
WHERE unique_id = 1
其中,對於樣本數據:
CREATE TABLE table_name (Unique_ID, Jan22, Feb22, Mar22) AS
SELECT 1, 5000, 1000, 3000 FROM DUAL UNION ALL
SELECT 2, 3000, 2000, 8000 FROM DUAL;
輸出:
1月22日 2月22日 MAR22 5000 1000 3000 5000 6000 9000
db<> 在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.