【问题标题】:Query to calculate difference of one row based on condition查询根据条件计算一行的差异
【发布时间】:2017-12-11 20:55:41
【问题描述】:

我有一个包含以下示例数据的表格:

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

我想检查 code1 和 code2 之和的差异是否相同。对于这个 Code1 和是 (1500+300) 和 code2 是 (1500+200) 并且差是 100

请分享代码

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    试试这个,

      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];
    

    【讨论】:

      【解决方案2】:

      您可以尝试条件 SUMCASE 。比较时在引号中包含零很重要,因为您的列 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;
      

      【讨论】:

      • 虽然这个答案可能是正确的,但从长远来看,留下一些解释会改善这个问题。
      【解决方案3】:
      select sum(decode(code1, '0', 0, amount) - decode(code2, '0', 0, amount))
      from your_table
      

      【讨论】:

      • 虽然这个答案可能是正确的,但从长远来看,留下一些解释会改善这个问题。
      猜你喜欢
      • 2019-08-24
      • 2021-12-10
      • 2017-12-20
      • 2017-10-22
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 2019-06-11
      • 2020-03-26
      相关资源
      最近更新 更多