[英]SQL Server 2008: DateDiff() of Min()/ Max() not working
您能幫我解決以下查詢嗎?
我的目標:
為每一天和每位員工選擇最小日期時間和最大日期時間,並獲得以分鍾為單位的時差
我的查詢:
SELECT
PersonalId, Name, LastName,
Min(TmsPrick) as MinDatetime,
Max(TmsPrick) as MaxDatetime,
DATEDIFF(mi, MIN(TmsPrick), MAX(TmsPrick)) AS Expr1
FROM
prickTable
GROUP BY
DATEPART(dy, TmsPrick), PersonalId, name, lastname, TmsPrick
ORDER BY
PersonalId, TmsPrick
注意: DATEPART(dy,TmsPrick)=一年中的一天
我的預期輸出
PersonalId | Name | LastName | MinDatetime | MaxDatetime | Expr1
------------------------------------------------------------------------------------
000001 | A | AC |2014-01-05 07:12:00|2014-01-05 16:00:00 | 528
000001 | A | AC |2014-01-06 07:08:00|2014-01-05 16:00:00 | 532
000001 | A | AC |2014-01-07 07:11:00|2014-01-07 16:00:00 | 529
000002 | B | BD |2014-01-05 07:11:00|2014-01-05 16:00:00 | 529
我得到的輸出:
PersonalId | Name | LastName | MinDatetime | MaxDatetime | Expr1
------------------------------------------------------------------------------------
000001 | A | AC |2014-01-05 07:12:00|2014-01-05 16:00:00 | 1053168
000001 | A | AC |2014-01-06 07:08:00|2014-01-05 16:00:00 | 532
000001 | A | AC |2014-01-07 07:11:00|2014-01-07 16:00:00 | 529
000002 | B | BD |2014-01-05 07:11:00|2014-01-05 16:00:00 | 1053169
知道為什么我的輸出顯示出這種差異嗎?
謝謝
注意: Tmsprick中的值可能從每天的幾天到一周的2不等。 該表包含3年以上的值。
好吧,雖然沒有看到源數據,但很難確定,但是您在MAX
/ MIN
和DATEDIFF
使用了不同的日期列:
SELECT
PersonalId,
Name,
LastName,
Min(TmsPrick) as MinDatetime,
Max(TmsPrick) as MaxDatetime ,
DATEDIFF(mi, MIN(tijdstip), MAX(tijdstip)) AS Expr1
^-- should be TmsPrick?
我懷疑您想要的查詢是:
SELECT PersonalId, Name, LastName,
Min(TmsPrick) as Mintime, Max(TmsPrick) as Maxtime,
DATEDIFF(mi, MIN(TmsPrick), MAX(TmsPrick)) AS Expr1
FROM prickTable
GROUP BY PersonalId, name, lastname, cast(TmsPrick as date)
ORDER BY PersonalId, max(TmsPrick);
這將給出每天的“經過”時間,因為第一個和最后一個“ tmsprick”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.