我试图总结基于工作中心的运行时间。例如,如果工作中心为108,则总结这些工作中心的运行时间:572,257,107,102和108.但如果工作中心108不存在,则不要总结。
以下是工作中心108的示例:
Work Center Run Time Hours
572 0.025
257 1
107 4.284
102 19.046
108 4.865
所以朗姆酒的总时间应该是:29.22
但如果没有工作中心108,我甚至不想总计其他工作中心572,257 107和102的总运行时间。
Work Center Run Time Hours
572 0.025
257 1
107 4.284
102 19.046
我累了:
SUM(
CASE
WHEN routingoperations.workcentreid IN ('108', '107','102','105','255','257','572')
THEN (dbo.routingoperations.runtime)
END) AS [Total Runtime Hours]
感谢所有帮助
答案 0 :(得分:0)
为什么不使用GROUP BY子句?如果工作中心108不在您的数据集中,它将不会出现在聚合中。 如果要过滤掉一些记录,请将它们放在WHERE子句中。
就像这样:
SELECT
WorkCenter
,TotalRunTime = SUM([Run Time Hours])
FROM [table]
GROUP BY
WorkCenter
WHERE
Workcenter NOT IN ('1','2','3','4')
答案 1 :(得分:0)
根据您的上次评论: 如果这是一个静态的情况,那么你需要首先检查工作中心= 108的任何记录,然后做一笔总和。您可以使用IF EXISTS语句执行此操作。 像这样:
IF EXISTS (SELECT 1 FROM WorkCenter WHERE WorkCenter = '108')
BEGIN
SELECT
TotalRunTime = SUM(RunTimeHours)
FROM WorkCenter
WHERE
WorkCenter in ('572','257','107','102','108')
END
ELSE
SELECT TotalRunTime = 0
如果您有基于工作中心的各种不同情况,则此逻辑不是最佳解决方案。