我需要帮助找出如何根据另外两个标准更新SQL Server列中的值,并将while括在“foreach”中(我知道在T-SQL中没有foreach)循环。我设法获得SQL视图,包含所涉及的所有参数:
抱歉,无法正常显示表格。
Here you can find a an example
我在这个特定情况下需要的是找到SamAccountNames
,它们是多个组的成员(相同SamAccountName
,具有不同的GroupID),比较此SAM的GroupStartDate
并获得最早的约会。
此日期我将在存储过程中用于更新指定用户(SAM)的每个作业。
在这个特殊的例子中:TonyS是两个团体的成员(78和79),因此他有资格获得支票。当我检查GroupStartDate时,我发现Tony可以找到一份工作,最早开始于2017-03-06(具有UniqueID1的工作),所以在这种情况下我需要用这个日期更新Tony的其他工作(Job UniqueID2需要更新)。
我已经搜索并尝试了许多不同的东西,但到目前为止,我甚至无法接近必须做的事情。
任何点击都非常感谢。
此致 贝
答案 0 :(得分:1)
您需要做的是按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