根据另一列中的值从同一列查找日期

问题描述 投票:0回答:1

我有一张表格,列出了几项任务以及这些任务将要执行或已经执行的日期。 [任务键]为主键。 [任务类型] 将相同的任务分组在一起。

任务表

另一个表告诉我任务是当前任务、基线任务还是快照任务。

类别表

我想创建一个表,在另一列中添加每个任务的基准日期

我才走到这一步。我知道有 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]
sql sql-server lookup
1个回答
1
投票

使用公用表表达式首先查找每个任务类型的基准日期,然后对其进行左外连接(以避免删除可能没有基准日期的行)。比如:

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
© www.soinside.com 2019 - 2024. All rights reserved.