SQL代码根据条件进行比较和累积

时间:2018-02-01 05:13:58

标签: mysql sql hana

如图所示:

enter image description here

enter image description here

这里我需要根据条件执行累积:

我有

   Column 1: Sales Date
   Column 2: Warranty End Date
   Column 3: Qty of Sales
   Column 4: Cumulative Sales Qty

现在第5列:保修期,这里给出了错误的值   当保修日期完成365天(到期)时,我需要在保修期内的保修计数栏中减去该有效期的销售额,类似于保修到期后的下一天计数开始减少。

例如图中: 2014年1月1日到2015年1月1日累计销量为246,我需要从' 96502' '' strong>这是累积销售直至 2015年1月1日。所以应该 96256

我们如何在保修计数中实现SQL中的逻辑'专栏

我的查询:

SELECT a."sales_year", 
       a."sales_billing_date", 
       a."warranty_end_date", 
       a."sum_val", 
       a."order_qty", 
       CASE 
         WHEN Sum(Days_between (a."warranty_end_date", a."sales_billing_date")) 
              < 365 
       THEN a."sum_val" 
         ELSE ( ( a."sum_val" ) - ( b."sum_val" ) ) 
       END AS "Under_Warranty" 
FROM   "_SYS_BIC"."pal/cv_pal_tbf_sales" a, 
       "_SYS_BIC"."pal/cv_pal_tbf_sales" b 
GROUP  BY a."sales_year", 
          a."sales_billing_date", 
          a."warranty_end_date", 
          a."order_qty", 
          b."sum_val", 
          a."sum_val"; 

1 个答案:

答案 0 :(得分:0)

假设整个表中SALES_BILLING_DATEWARRANTY_END_DATE相隔1年,您可以通过匹配表的每个实例的上面两列并在{{1上进行减法来进行自连接数量。

UNDER_WARRANTY

要在输出中保留2014条目,请尝试以下查询。更改为左联接具有相同的SELECT A.SALES_YEAR, A.SALES_BILLING_DATE, A.WARRANTY_END_DATE, A.SUM_VAL, A.ORDER_QTY, (A.UNDER_WARRANTY - B.UNDER_WARRANTY) AS UNDER_WARRANTY_NEW FROM YOUR_TABLE A INNER JOIN YOUR_TABLE B ON A.SALES_BILLING_DATE = B.WARRANTY_END_DATE; 条件,如果没有匹配,则ON金额保持不变。

UNDER_WARRANTY