簡體   English   中英

甲骨文數據庫。 如何從一條記錄的多個列中獲取運行總計

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM