我在Microsoft SQL Server 2016中有一个棘手的情况,其中我需要获取员工在 PayPeriod 中休假 (LOA) 的日期列表,其中包含固定的 PeriodStart 和固定的 PeriodEnd 列。
见下图(源数据集):
我在 5 行数据集中有 4 名员工。
PeriodStart 和 PeriodEnd 始终是固定的,其值分别为 12 月 15 日和 12 月 22 日(对于 2020 年)。我将每个员工的 LOA 开始日期和 LOA 结束日期放在不同的列中。源数据集在任何给定时间都只有一组 PeriodStart 和 PeriodEnd 日期。假设在上述情况下,始终是 12 月 15 日和 12 月 22 日。在其他情况下,将是 12 月 22 日和 12 月 29 日。但在给定时间只有一个范围。源数据集不能包含员工 X 的 12 月 15 日 - 12 月 22 日和员工 Y 的 12 月 22 日 - 12 月 29 日。
所需的输出如下:
这里的挑战是,我正在使用我们客户的查询生成器,它不能使用T-SQL对象,例如临时表 (#)、表变量 (@)、公用表表达式 (CTE)、用户定义函数甚至视图。
这纯粹是临时报告,您只能在其中创建派生表(或子查询)并拥有别名并将其用作数据集。这样的数据集可用于 JOIN 和其他常规内容。
例如:
SELECT a, b
FROM
(SELECT t1.a, t2.b
FROM table1 t1
INNER JOIN table2 t2
ON t1.ID = t2.ID) XYZ
派生表(或子查询) XYZ 是我的主要数据集。
我需要我想要的输出别名为 XYZ。
谁能帮我实现这一目标?