SQL:如何根据相似的值标记行?

时间:2015-03-08 21:34:04

标签: sql sql-server datatable logic business-intelligence

我有一个SQl表,如下所示: enter image description here

我试图弄清楚如何根据组所在的域标记一组具有主要属性的组,并且它们都具有相同的SetID。

例如,我想将一个Group标记为一个集合在主域A中的主要集合。因此在上面的表格中,第2行将标记为主要,因为第6行将被标记为主要。

我目前正在使用SQl Server。请帮忙!

谢谢:)

修改

我想要的输出是这样的: enter image description here

因此,在SetID 1中的组中,第2行位于域A中,因此第一行成为主要组。基本上我正在做的是确定要合并的组。因此,主标记允许我确定哪个组将是父组,哪个组中的其他组将是其子组。

1 个答案:

答案 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;