sql - MS SQL 服务器滞后
问题描述
我正在尝试LAG
在 SQL 查询中应用条件。有谁知道如何做到这一点?
这是查询:
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
陈述中添加另一个条件。IE
...
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
推荐阅读
- mysql - 如何使用终端从远程服务器执行“mysqldump”并在本地保存
- vert.x - Vertx:如何将路由器分离到不同的类以保持单个顶点
- javascript - 如何设计嵌套的 3 级 json
- sonarqube - 如何忽略 SonarQube 扫描仪中的所有 .scss 文件?
- wordpress - 如何在 WP 标题中显示滑块并运行?
- elasticsearch - 使用无痛脚本聚合嵌套文档
- c# - UWP Slider 的动画拇指
- spring-boot - 我想在创建 bean 期间访问我的 Session 变量
- jbpm - 如何选择合适的 jBPM 运行时策略
- rest - 如何在正在调用的 API 中检索页面 URL?