我有这种结果,但我想对值中的一些值求和。对不起我的英语不好。请参考图片以获得更好的理解。
预期结果:
我的SQL查询:
SELECT
itmnocate.Source as Local,
itmnocate.GradeCategory,
sum(sales_data.QUANTITY/1000) AS UnitMT
FROM
sales_data
INNER JOIN itmnocate
ON sales_data.ITEM = itmnocate.ItemNumber
WHERE
sales_data.unit = 'KG'
AND
sales_data.CUSTOMERACCOUNT not in ('CT1008','CT1009')
AND itmnocate.Source in ('local','by product')
GROUP BY itmnocate.GradeCategory
答案 0 :(得分:1)
WITH your_query
AS (SELECT 'BY PRODUCT' AS local,
'BY PRODUCT' AS "GradeCategory 1",
3380.59 AS unitmt
UNION ALL
SELECT 'LOCAL' AS local,
'LOCAL OTHERS' AS "GradeCategory 1",
2754.19 AS unitmt
UNION ALL
SELECT 'LOCAL' AS local,
'SUPER 15' AS "GradeCategory 1",
19598.17 AS unitmt
UNION ALL
SELECT 'LOCAL' AS local,
'TENDER/RAMPASAN' AS "GradeCategory 1",
53.65 AS unitmt
)
select MAX(local), sub_category,SUM(unitmt) from (SELECT local,
"GradeCategory 1",
unitmt,
CASE "GradeCategory 1" WHEN 'SUPER 15' THEN 'SUPER 15' ELSE 'LOCAL
OTHERS' END
AS sub_category
FROM your_query) processd_data group by sub_category
答案 1 :(得分:0)
您可以使用CASE
表达式来执行新操作,以计算新的类别值:
SELECT 'LOCAL' as Local,
(CASE WHEN i.GradeCategory = 'SUPER 15' THEN 'SUPER 15'
ELSE 'OTHERS'
END) as Cat,
SUM(s.QUANTITY/1000) AS UnitMT
FROM sales_data s INNER JOIN
itmnocate i
ON s.ITEM = i.ItemNumber
WHERE s.unit = 'KG' AND
s.CUSTOMERACCOUNT NOT IN ('CT1008', 'CT1009') AND
i.Source in ('local', 'by product')
GROUP BY cat;