首页 > 解决方案 > 在免费产品上使用 sql case 计算金额

问题描述

我有一个包含(产品代码、数量、单价...)的销售表,我想计算每个产品代码的金额,但我有一些免费产品,我希望金额为 0

我怎样才能用 SQL 做到这一点?

这是我所期待的想法

CASE
    WHEN freegoodline = 0 THEN
        AMOUNT = SUM(B.QUANTITYB.UNITPRICEB.VAT1RATE) OVER(partition by B.PRODUCT_CODE, B.sinvoice_code)
    ELSE
        AMOUNT = 0
END

标签: sqlsql-serveretlbusiness-intelligencemsbi

解决方案


使用CASE表达式进行条件聚合:

SELECT productcode, 
       SUM(CASE WHEN productcode = 'free' THEN 0 ELSE quatity * unitprice  END) AS Amount
FROM sales s
GROUP BY productcode;

推荐阅读