sql - SQL Server - 根据列值如何跨行更改来计算行数
问题描述
我在 SQL Server DB 中有一个表,如下所示:
TBL_EMPLOYEE
现在我需要为每个员工获取第一个(最小)和最后一个(最大)RecordID 并执行以下操作:
- 如果第一条记录是美国,最后一条是加拿大:然后将员工标记为“美国到加拿大”。
- 如果最后一条记录是 USA 并且首先是 Canada :然后将员工标记为“Canada to USA”。
我的最终目标是制作下表 - 这将显示跨越两个国家的员工数量。
TBL_MIGRATION
如何在 SQL Server 中实现这一点?
解决方案
听起来您想要每个员工的第一行和最后一行。然后您可以跟踪整体运动:
select first_workfrom, last_workfrom, count(*)
from (select t.*,
first_value(workfrom) over (partition by employee order by recordid) as first_workfrom,
first_value(workfrom) over (partition by employee order by recordid desc) as last_workfrom
from t
) t
group by first_workfrom, last_workfrom
having first_workfrom <> last_workfrom;
推荐阅读
- google-bigquery - 如何查询 BigQuery 视图和表的依赖关系?
- swift - 如何快速计算变量值的数量?
- python - 如何在python中确定两个向量是线性相关还是独立的?
- c# - PlayAgain 方法
- java - 使用 lombok 1.18.12 构建的 gradle 6.4 不生成 getter 和 setter
- python - 如何在 Python 3 中使用生成器管道?
- javascript - 如何使用 Redux Saga debounce 但先获取而不是等待 n 毫秒
- php - MDB Jquery - 线性步进器 - 重置功能
- debugging - 解析 DWARF 的有效方法
- python - 如何在特征少于最初训练的原始数据集的数据集上使用标准缩放器模型