簡體   English   中英

如何計算PL / SQL Oracle?

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

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