[英]How to calculate in PL/SQL Oracle?
我有2列,每列有2行。 例如
A B
100 200
200 300
所以我想像這樣計算
Total A Total B
200-100 = 100 300-200=100
節目
Total A Total B
100 100
使用MAX()
和MIN()
聚合函數:
SELECT MAX(A) - MIN(A) AS "Total A",
MAX(B) - MIN(B) AS "Total B"
FROM TableName
取決於您想要管理的內容。 如果問題與連續行之間的差異有關,則使用lead()
或lag()
窗口分析函數可能是一種聰明的方法:
with t( a, b ) as
(
select 100, 200 from dual union all
select 200, 300 from dual
), t2 as
(
select lead(a) over (order by 1) - a as "Total A",
lead(b) over (order by 1) - b as "Total B",
row_number() over (order by 1) as rn
from t
)
select *
from t2
where rn = 1;
Total A Total B RN
100 100 1
你可以這樣查詢,
WITH your_table AS
(SELECT 100 a, 200 b
FROM DUAL
UNION ALL
SELECT 200 a, 300 b
FROM DUAL
ORDER BY 1 DESC)
SELECT SUM(DECODE(ROWNUM, 1, a, -1*a)) TOTAL_A, SUM(DECODE(ROWNUM, 1, b, -1*b)) TOTAL_B
FROM your_table;
您可以嘗試如下
Select * , `entity1`-`entity2` As `entity3`
FROM tbl
希望這可以幫助。
在他們的問題中,他們首先想要從最大值中刪除以及由其他人提供給您的解決方案,並且您想要從最后一行/第二行刪除。 因此,第二種方法為您提供了解決方案。 請討論是否有任何疑問。
select sum(Result.A) as A, sum(Result.B) as B, from (
select top 1 A , B from Table_name order by id_row_order desc
union all
select top 1 - A , -B from Table_name order by id_row_order Asc
) as Result
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.