2013-07-24 76 views
0

在SSRS我需要確定一個返回結果的情況下,有多少次一個驅動程序登錄到用戶指定的日期之間的系統 - 我已經有顯示[Driver] "LoggedOn at" [TimeOn] "Logged off at" [TimeOff] "for a duration of" [TimeOff-TimeOn](多一點它比報告,但多數民衆贊成在骨頭)。SSRS 2008 - 計數

產生的報表看起來像這樣和正常工作:

David Niven logged on at .... for a duration of 3 hours 

John Jones logged on at ... for a duration of 7 hours 

David Niven logged on at ... for a duration of 5 hours 

David Niven logged on at ... for a duration of 2 hours 

Paul Newman logged on at .... for a duration of 3 hours etc etc 

我需要做的是提供一個總結 - 用戶指定日期

David Niven logged on 3 times for a total duration of 10 hours 
John Jones logged on 1 time for a total duarion of 7 hours 
Paul Newman logged on 1 time for a total duartion of 3 hours 

我可以使用表達式之間即加次,每次司機在SSRS 2008多長時間登錄的號碼? - 如果是這樣,如何 - 如果需要,可以給我的查詢更具體的例子...提前很多很多的感謝

回答

0

您可以使用兩種不同的查詢,只使用分組和一個子查詢:

DECLARE @driverInfo TABLE 
(
    Name varchar(50), 
    TimeOn datetime, 
    TimeOff datetime 
) 

INSERT INTO @driverInfo 
SELECT 'David Niven', '2013-07-23 09:00', '2013-07-23 12:00' 
UNION ALL SELECT 'John Jones', '2013-07-23 09:00', '2013-07-23 16:00' 
UNION ALL SELECT 'David Niven', '2013-07-23 13:00', '2013-07-23 18:00' 
UNION ALL SELECT 'David Niven', '2013-07-24 09:00', '2013-07-24 11:00' 
UNION ALL SELECT 'Paul Newman', '2013-07-23 09:00', '2013-07-23 12:00' 

-- used for first data set 
SELECT *, DATEDIFF(hour, TimeOn, TimeOff) AS [TotalHours] 
FROM @driverInfo 

-- used for second data set 
SELECT Name, COUNT(*), SUM(TotalHours) 
FROM (
    SELECT Name, DATEDIFF(hour, TimeOn, TimeOff) AS [TotalHours] 
    FROM @driverInfo 
) S 
GROUP BY S.Name 
0

如果你想在報告級別從同一數據集的詳細值要做到這一點,你可以這樣添加表達式到組頁眉/頁腳:

=Fields!Driver.Value 
    & " logged on " 
    & CountRows() 
    & " times for a total duration of " 
    & Sum(DateDiff(DateInterval.Hour, Fields!TimeOn.Value, Fields!TimeOff.Value)) 
    & " hours" 

CountRows只是給出了行數組,即登錄的次數,你可以總結的該組中每一行的值來獲得總小時。

+0

難道你有這個建議任何運氣? –