我有一张表格,列出了几项任务以及这些任务将要执行或已经执行的日期。 [任务键]为主键。 [任务类型] 将相同的任务分组在一起。
任务表
另一个表告诉我任务是当前任务、基线任务还是快照任务。
类别表
我想创建一个表,在另一列中添加每个任务的基准日期
我才走到这一步。我知道有 Windows 函数 ROW_NUMBER 和 LEAD 和 LAG,但不知道如何实现它。
SELECT
ta.[Task Key],
ca.[Task Type],
ta.[Task Type],
ta.[Task Name],
ta.[Task Date]
FROM
TASK ta
LEFT JOIN
CATEGORY ca
ON
ta.[Task Key] = ca.[Task Key]
使用公用表表达式首先查找每个任务类型的基准日期,然后对其进行左外连接(以避免删除可能没有基准日期的行)。比如:
WITH b AS (
SELECT t.task_type,
t.task_date as baseline_date
FROM task t
JOIN category c ON t.task_key = c.task_key
WHERE c.category = 'baseline'
)
SELECT t.task_key,
t.task_type,
t.task_name,
t.task_date,
b.baseline_date
FROM task t
LEFT OUTER JOIN b on t.task_type = b.task_type