根据其他列中的复杂条件更新 SQL 列



我需要帮助来弄清楚如何根据两个附加条件更新 SQL Server 列中的值,并将 while 括在"foreach"(我知道 T-SQL 中没有 foreach)循环中。我设法获得了SQL视图,其中包含所有涉及的参数:

SQL 视图

抱歉,无法正确显示表格。

在这里你可以找到一个例子

在这种特殊情况下,我需要的是找到SamAccountNames,它们是多个组(相同的SamAccountName,具有不同的组 ID)的成员,比较此 SAM 的GroupStartDate并获取最早的日期。

然后,我将在存储过程中使用此日期来更新指定用户 (SAM) 的每个作业。

在这个特定的例子中:TonyS 是两个组(78 和 79)的成员,因此他有资格获得支票。当我检查 GroupStartDate 时,我看到 Tony 可以有一个工作,最早从 2017-03-06 开始(具有 UniqueID1 的工作),所以在这种情况下,我需要用这个日期更新 Tony 的其他工作(需要更新工作 UniqueID2)。

我已经搜索并尝试了许多不同的事情,但到目前为止,我甚至无法接近必须做的事情。

任何点击都非常感谢。

问候 托尼

您需要做的是按SamAccountName对记录进行分组并获得最小GroupStartDate,这将是"最早"的工作开始日。

-- get the ones with more than one groupId
;with multiple_groups_cte as
(
select j.SamAccountName, count(distinct GroupId) nr_groups, MIN(groupstartdate) Earliest_GroupStartDate
from #jobs j
group by SamAccountName
having count(distinct GroupId) > 1
)
select  SamAccountName, Earliest_GroupStartDate
from multiple_groups_cte

此查询将为您提供以下结果:

SamAccountName  Earliest_GroupStartDate
GarryT          2017-01-08 00:00:00.0000000
TonyS           2017-03-06 00:00:00.0000000

相关内容

  • 没有找到相关文章

最新更新