【发布时间】:2021-04-02 03:51:51
【问题描述】:
我在这里显示了这个存储过程,它计算每个部门的订单数量、拒绝和拒绝百分比,但我有一个问题:为了对订单数量求和,我只需要考虑不同的订单号来对订单数量求和,但对于拒绝数量,应考虑所有行。如何做到这一点?
存储过程:
CREATE PROCEDURE orderqtyper
@fromDate Date,
@toDate Date
AS
SELECT
Department,
SUM(Order_Qty) AS [Order Qty],
SUM(Rejection_Qty) AS [Rejection Qty],
FORMAT((SUM(Rejection_Qty) * 100.0 / NULLIF(SUM(Order_Qty), 0) / 100), 'P') AS Percentage
FROM
Semicon_NPD
WHERE
(Date BETWEEN @fromDate AND @toDate)
GROUP BY
Department
ORDER BY
Percentage DESC
示例表:
当前结果:
预期结果(如果订单号相同,则订单数量应仅取唯一值之和,而拒绝数量应取所有值之和):
【问题讨论】:
-
您的表是非规范化的。
RejectionQty应该是一个带有外键的单独表,那么您将只有一行要处理 -
嗨@Charlieface..我是sql server的新手,你能解释一下吗..
标签: sql-server stored-procedures unique