如图所示:
这里我需要根据条件执行累积:
我有
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";
答案 0 :(得分:0)
假设整个表中SALES_BILLING_DATE
和WARRANTY_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