【问题标题】:Calculate the amount using sql case on free product在免费产品上使用 sql case 计算金额
【发布时间】:2020-03-10 09:42:02
【问题描述】:

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

【问题讨论】:

  • 向我们展示一些示例表数据和预期结果 - 都是格式化文本,而不是图像。 (minimal reproducible example)
  • 你是怎么做到的?你能告诉我们你的努力吗?
  • 如果产品“免费”,单价是多少?

标签: sql sql-server etl business-intelligence msbi


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    通常,如果产品是免费的,则单价为零或NULL。如果是这种情况,您只需要:

    sum(quantity * unitprice)
    

    不需要条件逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多