查询根据条件计算一行的差异

时间:2017-12-11 09:46:30

标签: sql oracle

我有一张包含以下样本数据的表格:

  ID   Code1   Code2 Amount
  -------------------------
   1     A       0    1500  
   1     0       B    1500  
   1     0       B     200  
   1     A       0     300

我想检查code1和code2之和的差异是否相同。对于此Code1,Sum为(1500 + 300),code2为(1500 + 200),差值为100

请分享代码

3 个答案:

答案 0 :(得分:0)

select sum(decode(code1, '0', 0, amount) - decode(code2, '0', 0, amount))
from your_table

答案 1 :(得分:0)

您可以使用SUM尝试条件CASE。在比较时,在引号中包含零是很重要的,因为您的列code1,code2是字符类型。

SELECT   SUM (CASE WHEN code1 != '0' THEN amount ELSE 0 END)
       - SUM (CASE WHEN code2 != '0' THEN amount ELSE 0 END)
          diff
  FROM yourtable;

答案 2 :(得分:0)

试试这个,

  select case when code1='A' than sum(Amount) else 0 [Sum1] end,
      case when code2='B' than sum(Amount) else 0 [Sum2] end,
      case when [Sum1]=[S2] 'Same' else "Not Same' end
      from [Table_name];