我正在尝试使用CASE / WHEN语句生成的SUM值。唯一的问题是价值来自不同的领域。
例:
这是我查询中的一个项目中的一组开销值。在这个例子中,我需要将开销值14.850000和1.166600 SUM到16.016
vac_type列确定成本类型。在这种情况下,当vac_type = WO1或WO2时,它们是间接成本。 W10不是,因此是NULL值。
总共有12个vac_types是开销值。它们都列在我的CASE / WHEN语句中。我需要通过item_no来汇总所有这些开销值,但由于vac_type字段有两个不同的值,因此我的查询将它们视为彼此的DISTINCT并且无法求和。
这是我通过item_no尝试SUM Overhead的失败。它生成上面的屏幕截图来自的列表:
SELECT DISTINCT 'Overhead' = SUM(CASE
WHEN vac_type IN('A01', 'AD0', 'ADX', 'A01', 'CI0', 'DO1', 'DP9',
'O20', 'PWO', 'TO1', 'WO1', 'WO2')
THEN (Cost_Values)
ELSE NULL
END,
item_no,
comp_item,
vac_type
FROM table_1
GROUP BY item_no,
comp_item,
vac_type
答案 0 :(得分:0)
感谢@Lamak的回答。为了按item_no进行SUM开销,需要从SELECT和GROUP BY语句中删除任何唯一字段。通过删除vac_type,我得到了我需要的数据。
SELECT 'Overhead' = Sum(CASE
WHEN vac_type IN ( 'A01', 'AD0', 'ADX', 'AO1',
'CI0', 'DO1', 'DP9', 'O20',
'PWO', 'TO1', 'WO1', 'WO2' )
THEN (Cost_Values)
ELSE NULL
END),
item_no,
comp_item_no
FROM table_1
GROUP BY item_no,
comp_item