sql - 未按 select 语句中包含的所有列进行分组
问题描述
我有以下脚本,我希望仅按客户和类型进行分组,但是当我在 select 语句中使用它时,它迫使我也按 p.ID 对其进行分组。*我怎样才能应用这个乘法逻辑(5)并且仍然只按客户和类型对所有 p.ID 和组进行总结。
非常感谢您的帮助!
SELECT
CUSTOMER
,TYPE
--,p.ID
,CASE
WHEN p.ID = 'GAX' THEN SUM(QTY) * 5
ELSE SUM(QTY)
END AS TOTAL_QTY
INTO TEMP_TABLE
FROM ORDERS o
INNER JOIN PRODUCT p ON o.MATERIAL_ID = p.MATERIAL_ID
GROUP BY CUSTOMER
,TYPE
--,p.ID;
解决方案
我认为你想要条件聚合。是的case
参数sum()
:
SELECT CUSTOMER, TYPE,
SUM(CASE WHEN p.ID = 'GAX' THEN QTY * 5
ELSE QTY
END) AS TOTAL_QTY
INTO TEMP_TABLE
FROM ORDERS o INNER JOIN
PRODUCT p
ON o.MATERIAL_ID = p.MATERIAL_ID
GROUP BY CUSTOMER, TYPE;
推荐阅读
- c# - 根据 ID 选择文件
- php - 通过子目录中的 htaccess 从 URL 中删除目录名称
- javascript - 在 NodeJS 中返回未定义的异步函数
- postgresql - docker-compose 在运行命令时找不到要注入 Postgresql 的文件
- c++ - SCIP 求解器中的 SCIPgetSolVal 未返回解值
- android - 新片段下可见的先前活动
- python - 如何在烧瓶中使用 HTTPS 运行 localhost?
- javascript - 为什么 vue-cli-3 不会构建,“找不到'wepack'”?
- python - 我应该如何将 2 个参数从我的列表中传递给 csv-writer?
- bash - 如何找到一个数字序列