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