sql - 在免费产品上使用 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
解决方案
使用CASE
表达式进行条件聚合:
SELECT productcode,
SUM(CASE WHEN productcode = 'free' THEN 0 ELSE quatity * unitprice END) AS Amount
FROM sales s
GROUP BY productcode;
推荐阅读
- mysql - 使用 ORDER BY 和 INNER JOIN 优化 MySQL 查询(选择用户关注的位置)
- css - 如何在Vue中防止UI框架中的全局css样式
- hex - 从 jq 得到的十六进制字符串不能转换为十进制值
- bazel - Bazel Junit5 开箱即用兼容性
- hyperledger - Hyperledger Tape:不可用 desc = 传输正在关闭,状态:
- python - Pandas 在循环中重塑 DataFrame
- excel - AdvancedFilter 识别唯一值
- gnuplot - Gnuplot:如何绘制相反的条形图或金字塔条形图
- antlr4 - 为什么我的 antlr 语法给我一个错误?
- r - 选择 3 彩票的蒙特卡洛