【发布时间】:2020-03-09 19:18:38
【问题描述】:
我有一个员工列表,以及他们工作过的城市列表。我需要按城市构建一个开始/结束日期的矩阵(在 SQL Server 中),以确定他们在任何给定时间段内的位置.
“结束日期”正好是他们出现在新位置之前的日期。
我已经包含了源表的示例、输出表应显示的内容以及构建临时表的代码。
关于如何设计此查询以及使用哪些函数有什么建议吗?
来源:
EMP DATE LOCATION
-----------------------------------
Pinal 2020-01-01 Bangalore
Pinal 2020-01-02 Bangalore
Pinal 2020-01-04 Uttar Pradesh
Pinal 2020-01-06 Uttar Pradesh
Pinal 2020-01-20 Mumbai
Pinal 2020-01-22 Bangalore
所需的查询输出:
EMP DATE_FROM DATE_TO LOCATION
----------------------------------------------
Pinal 2020-01-01 2020-01-03 Bangalore
Pinal 2020-01-04 2020-01-19 Uttar Pradesh
Pinal 2020-01-20 2020-01-21 Mumbai
Pinal 2020-01-22 2099-01-01 Bangalore
CREATE TABLE #EMP
(
EMP VARCHAR(30) NOT NULL ,
DATE_WORKED DATE NOT NULL ,
CITY VARCHAR(30) NOT NULL
);
INSERT INTO #EMP (EMP, DATE_WORKED, CITY)
VALUES
('Pinal','2020-01-01','Bangalore'),
('Pinal','2020-01-02','Bangalore'),
('Pinal','2020-01-04','Uttar Pradesh'),
('Pinal','2020-01-06','Uttar Pradesh'),
('Pinal','2020-01-20','Mumbai'),
('Pinal','2020-01-22','Bangalore')
【问题讨论】:
标签: sql sql-server tsql sql-server-2008 matrix