簡體   English   中英

SQL Server 2008:Min()/ Max()的DateDiff()不起作用

[英]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 / MINDATEDIFF使用了不同的日期列:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM