首页 > 解决方案 > 未按 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;

标签: sqlsql-server

解决方案


我认为你想要条件聚合。是的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;

推荐阅读