sql - 正确计算 SQL 中的工作日
问题描述
我有一个包含一些用户 ID 事件的表(起始表)。
在此表中有一个 Event_Id = 1 表示当地假期(不是工作日)。
我需要填写“Event_1”列才能正确计算WorkingDays(结果表 - 如下)。
在 Event_Id <> 1 的每一行中,如果对应的用户在 StartDate 和 EndDate 之间匹配 Event_Id = 1,则 Event_1 列应为 1,否则应为 0。
如果分析中的行 Event_id = 1,则 Event_1 列中的值也
应为 0。
我已经有一个计算工作日的函数。
问候, 埃利奥·费尔南德斯
解决方案
我想出了这个解决方案,但我想知道您是否认为这是最好的方法。
Select T1.*,
Case
When t2.StartDate Is not Null and t1.Event_Id = 1 then 0
When t2.StartDate Is not Null Then 1
Else 0
End As [Local_Holiday]
From
[plann].[Events] as T1 left Join
(Select StartDate
From [plann].[Events]
Where Event_Id = 1 ) as T2 ON T2.StartDate Between T1.StartDate and T1.EndDate
推荐阅读
- swift - 无法赋值:“downloadURL”是一个 let 常量
- neo4j - Neo4j 映射异常
- vue.js - 如何在 vue 环境中更改我的 c3 图表轴颜色
- memory - Pyspark 作业因阶段失败而中止
- react-native - 意外的标记。运行 jest 时的 state = {}
- terraform - Terraform - GCP - 将 IP 地址链接到链接到云存储桶的负载均衡器
- c# - 如何使用C#检查dataGridView中选定行中的单元格是否为空/空?
- php - 我无法提取数据库中的 id 部分
- swift - 如何使用 alamofire 将服务的响应存储在模型中
- 3d - 手动将 3D 对象的局部上轴旋转到世界上轴?