2017-06-19 34 views
0

嗨我想計算滿足特定參數的多行所用的時間。這裏是我的查詢當滿足參數時計算多行的時間

SELECT 
EventDate AS 'Date' 
,ID 
,DeptCode 'DC' 
,OpCode 'OC' 
,ElapsedTime = convert(time(0),dateadd(second,datediff(second,StartTime,FinishTime),0)) 
,Units = SUM(Units) 
,UPH = cast(isnull(sum(Units)/nullif(sum(datediff(minute,StartTime,FinishTime))*1.0,0),0.0)*60 as decimal(10,0)) 
FROM dbo.TimeLog WITH (NOLOCK) 
WHERE EventDate = '06/15/17' AND DeptCode = 'ST' AND OpCode = 'BT' 
GROUP BY 
    EventDate, ID, DeptCode, OpCode, StartTime, FinishTime 
ORDER BY UPH DESC 

下面是結果...

Date ID  DC OC ElapsedTime Units UPH 
6/15/17 2375278 ST BT 00:48:00 3262 4077 
6/15/17 2375278 ST BT 03:15:00 4730 1455 
6/15/17 2375278 ST BT 00:12:00 NULL 0 
6/15/17 2375278 ST BT 00:30:00 NULL 0 
6/15/17 2375278 ST BT 00:30:00 NULL 0 
6/15/17 2375278 ST BT 00:45:00 NULL 0 
6/15/17 2375278 ST BT 03:20:00 NULL 0 
6/15/17 2375278 ST BT 00:40:00 NULL 0 

我想看看這是我的結果

Date ID  DC OC ElapsedTime Units UPH 
6/15/17 2375278 ST BT 10:00:00 7992 799 

有人可以幫腳本這個好嗎?

回答

0
select [Date], ID, DC, OC, sum(ElapsedTime), sum(Units), sum(UPH) 
    from (SELECT EventDate AS 'Date' 
       ,ID 
       ,DeptCode 'DC' 
       ,OpCode 'OC' 
       [...] 
     ) subquery 
group by [Date], ID, DC, OC; 
+0

只是去嘗試查詢,不能按ElapsedTime和UPH不在表 – DRUIDRUID

+0

是列,但他們是你的SELECT列。使用你現有的SELECT並把我貼在它上面的SELECT。 – IngoB

+0

噢,是的,我收到一條錯誤消息,列'dbo.TimeLog.EventDate'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。 – DRUIDRUID