我正在根据客户对产品进行分组,报告我们库存的库存数量和条件代码。我们使用的条件代码不是我们想要报告的,所以我使用CASE来改变它。有一种产品在条件代码中有空值。此产品显示两次,一次条件代码为A(quanitity 7100),一次条件代码为空白(数量4)。我也需要使用条件代码进行分组,因为我们可以在不同的条件下使用相同的产品。对于任何空白,我需要将它们包括为A.使用CASE将空白更改为A报告产品两次,一次使用7100,一次使用4.我需要将这两者相加。这是我目前使用的代码。
SELECT CLIENTNAME, PRODUCT, SUM(QUANTITY) as 'On Hand',
CASE (RESERVED)
WHEN 'B' THEN 'H'
WHEN 'I' THEN 'L'
WHEN '0' THEN 'A'
ELSE RESERVED
END AS 'COND_CD'
FROM binlocat
GROUP BY
CLIENTNAME, PRODUCT, RESERVED
ORDER BY
PRODUCT
答案 0 :(得分:0)
重复CASE
中的GROUP BY
或执行替换然后求和;
;WITH T(CLIENTNAME, PRODUCT, QUANTITY, RESERVED) AS
(
SELECT CLIENTNAME, PRODUCT, QUANTITY,
CASE (RESERVED)
WHEN 'B' THEN 'H'
WHEN 'I' THEN 'L'
WHEN '0' THEN 'A'
ELSE RESERVED
END
FROM binlocat
)
SELECT CLIENTNAME, PRODUCT, SUM(QUANTITY)
FROM T
GROUP BY CLIENTNAME, PRODUCT, RESERVED
ORDER BY PRODUCT
答案 1 :(得分:0)
您可以像这样包装您的查询:
SELECT CLIENTNAME, PRODUCT, COND_CD, SUM(QUANTITY) AS 'On Hand'
FROM
(
SELECT CLIENTNAME, PRODUCT, QUANTITY,
CASE (RESERVED)
WHEN 'B' THEN 'H'
WHEN 'I' THEN 'L'
WHEN '0' THEN 'A'
ELSE RESERVED
END AS 'COND_CD'
FROM binlocat
)
GROUP BY
CLIENTNAME, PRODUCT, COND_CD
ORDER BY
PRODUCT
内部SELECT
创建一个表,外部选择可以在该表上进行分组。