我需要帮助来弄清楚如何根据两个附加条件更新 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