我有一个SQl表,如下所示:
我试图弄清楚如何根据组所在的域标记一组具有主要属性的组,并且它们都具有相同的SetID。
例如,我想将一个Group标记为一个集合在主域A中的主要集合。因此在上面的表格中,第2行将标记为主要,因为第6行将被标记为主要。
我目前正在使用SQl Server。请帮忙!
谢谢:)
修改
我想要的输出是这样的:
因此,在SetID 1中的组中,第2行位于域A中,因此第一行成为主要组。基本上我正在做的是确定要合并的组。因此,主标记允许我确定哪个组将是父组,哪个组中的其他组将是其子组。
答案 0 :(得分:0)
我猜你想要所有上的标记集合中的行。标签唯一的逻辑是帐户名称列。所以,这样的事情应该有效:
with toupdate as (
select t.*,
min(case when domain = 'A' then AccountName end) over (partition by setid) as minan
from table t
)
update toupdate
set primary = minan;
编辑:
对于澄清的问题,您应该能够:
update table t
set primary = 'primary'
where domain = 'A';
但是,在我看来,在这种情况下,使用计算列会更好。
如果某个集合的域A可能有多行,则:
with toupdate as (
select t.*, row_number() over (partition by domain order by newid()) as seqnum
from table t
)
update toupdate
set primary = 'primary'
where seqnum = 1;