繁体   English   中英

MS SQL服务器延迟

[英]MS SQL SERVER LAG

在此处输入图片说明

我正在尝试在SQL查询中将条件应用于LAG 有谁知道如何做到这一点?

这是查询:

  SELECT CONCAT([FirstName],' ',[LastName]) AS employee,
         CAST([ArrivalTime] AS DATE) AS date,
         CAST(DATEADD(hour,2,FORMAT([ArrivalTime],'HH:mm')) AS TIME) as time,
         CASE [EventType]
         WHEN 20001 THEN 'ENTRY'
         ELSE 'EXIT'
         END AS Action,
         OutTime = 
  CASE [EventType]
  WHEN '20001'
  THEN DATEDIFF(minute,Lag([ArrivalTime],1) OVER(ORDER BY [CardHolderID], [ArrivalTime]), [ArrivalTime]) 
  ELSE
  NULL
  END
  FROM [CCFTEvent].[dbo].[ReportEvent]
  LEFT JOIN [CCFTCentral].[dbo].[Cardholder] ON  [CCFTEvent].[dbo].[ReportEvent].[CardholderID] = [CCFTCentral].[dbo].[Cardholder].[FTItemID]
  WHERE EventClass = 41
  AND [FirstName] IS NOT NULL
  AND [FirstName] LIKE 'Leeann%'

我的问题是两个不同日期之间的时间相减时,两个不同日期之间的时间相减时也必须为NULL

在此处输入图片说明

910不正确。

我会在您的case陈述中添加另一个条件。

...
CASE 
   WHEN [EventType] = '20001' AND DATEDIFF(DAY,[ArrivalTime],LAG([ArrivalTime]) over (ORDER BY [CardHolderID], [ArrivalTime])) > 0
   THEN NULL
   WHEN [EventType] = '20001'
   THEN DATEDIFF(minute,Lag([ArrivalTime],1) OVER(ORDER BY [CardHolderID], [ArrivalTime]), [ArrivalTime])
   ELSE NULL

在我看来,LAG仅需要按日期进行分区(以及其他一些可以很好度量的字段)。

如果以前的日期在另一个分区中,
那么LAG将返回NULL,
那么datediff将返回NULL。

SELECT 
 CONCAT(holder.FirstName+' ', holder.LastName) AS employee,
 CAST(repev.ArrivalTime AS DATE) AS [date],
 CAST(SWITCHOFFSET(repev.ArrivalTime,'+02:00') AS TIME)  as [time],
 IIF(repev.EventType = 20001, 'ENTRY', 'EXIT') AS Action,
 (CASE WHEN repev.EventType = 20001
  THEN DATEDIFF(minute, LAG(repev.ArrivalTime) 
                        OVER (PARTITION BY repev.EventClass, repev.CardholderID, CAST(repev.ArrivalTime AS DATE) 
                              ORDER BY repev.ArrivalTime), repev.ArrivalTime)
  END) AS OutTime
FROM [CCFTEvent].[dbo].[ReportEvent] AS repev
LEFT JOIN [CCFTCentral].[dbo].[Cardholder] AS holder ON holder.FTItemID = repev.CardholderID
WHERE repev.EventClass = 41
  AND holder.FirstName LIKE 'Leeann%'

DB <>小提琴测试这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM