我刚刚从CASE / WHEN查询中询问了一个与here相关的问题。我的部分问题得到了解答,这导致了另一个问题。
我有三个字段,item_no,comp_item_no和Overhead。 comp_item_no是item_no字段的组件项列表。这意味着项目00011PP,00011PPX和00011X至少部分地从项目00011创建。
项目00011和00011S由项目ST1FJP91组成,其具有NULL开销成本。
不幸的是,字段中显示的开销值不会考虑组件项。而不是item_no 00011PP显示的$ 23.44,真正的开销值将是$ 23.44 + $ 16.02,或$ 39.46。这是因为item_no 00011至少部分用于创建item_no 00011PP,而且它的Overhead值需要反映出来。
我需要找到一种方法来补充这些开销值以包含它们各自的组件项,但我找不到可行的解决方案。这是我的查询显示故事的其余部分:
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_no
您知道,vac_type是不同值的标识符,意味着当vac_type IN('A01','AD0','ADX','AO1','CI0','DO1','DP9',' O20',PWO','TO1','WO1','WO2'),然后值是开销
答案 0 :(得分:1)
如果我理解正确,您需要将每个项目的开销加起来。然后,您需要添加相关项目的开销。如果是这样的话:
with toh as (
select t1.item_no, t1.comp_item_no,
(sum(case when vac_type in ( . . . ) then overhead else 0 end) as overhead
from table_1 t1
)
select toh.item_no, toh.comp_item_no,
(toh.overhead + sum(toho.overhead)) as overhead
from toh left join
toh toho
on toh.comp_item_no = toho.item_no
group by toh.item_no, toh.comp_item_no, toh.overhead;