我正在尝试为报告项目查找“人工和间接费用”。通过处理在“因素”列和“费率”列中找到的数据来发现“人工”和“间接费用”。这些因素和比率按不同类型分类。它比需要的要复杂得多,理解它是我的工作。

这是“费用列”未排序的返回数据片段。
mysql - SQL-使用Case,When时汇总不同行中的值-LMLPHP

当类型= W10时,则成本基于人工,而当类型= WO1或WO2时,成本则基于间接费用。
 我的困境是我必须将Type ='WO1,WO2'时找到的值相加,以得到总的间接费用。
我决定使用CASE / WHEN尝试获取所需的数据,但我不知道如何将开销总和加在一起。

到目前为止,我的代码是:

SELECT DISTINCT 'LABOR' = CASE
WHEN TYPE = 'W10' THEN (FACTOR * RATE)
ELSE 0
END, //This part is fine//
'OVERHEAD' = CASE
WHEN TYPE = 'WO1, WO2' THEN SUM(FACTOR * RATE)
ELSE 0
END,

FROM TABLE_1


但是,当Type = WO1或WO2时,SUM(Factor * Rate)不会将两行Cost相加,而是返回0,如下所示:

mysql - SQL-使用Case,When时汇总不同行中的值-LMLPHP

我不知道我对问题的描述得如何好,但是如果你们能帮助解决这个问题,那就太好了。

最佳答案

试试看

when type IN ('W01','W02')


编写TYPE ='WO1,WO2'就是在寻找'W01,W02',而不是其中之一。

由于申请人的上述说法无法正常使用,因此我添加以下内容:

'OVERHEAD' = CASE
WHEN TYPE = 'WO1' THEN SUM(FACTOR * RATE)
WHEN TYPE = 'WO2' THEN SUM(FACTOR * RATE)
ELSE 0
END,

10-06 02:45