2015-06-02 55 views
0

所以我有一个表(Org_Contacts)将联系人表链接到组织。基于列计数的SQL增量

表是当前设置是这样的:

Organization ID (int) 
Contact ID (int) 
Priority (int) 

可能有多个联系人的组织,我想插入在联系人和基于联系人数量分配到一个组织,我想增加该联系人的优先级。

举例来说,我有两个组织,ABC(编号:90)XYZ(编号:91)

我对这两个组织有5个联系人。 约翰(ID:10), 简(ID:11), 史蒂夫(ID:12), 鲍勃(ID:13), 珍(ID:14)

当我添加约翰农行作为联系我要优先从1开始

Org_Contacts 
------------ 
90|10|1 

接下来,我将添加简同一组织的接触引起她的优先级为2

Org_Contacts 
------------ 
90|10|1 
90|11|2 

FOL ,史蒂夫将被添加降脂,但他将是XYZ

接触
Org_Contacts 
------------ 
90|10|1 
90|11|2 
91|12|1 

Bob将是下一个,将被加入到ABC

Org_Contacts 
------------ 
90|10|1 
90|11|2 
91|12|1 
90|13|3 

和最后一个是詹妮弗到XYZ

Org_Contacts 
------------ 
90|10|1 
90|11|2 
91|12|1 
90|13|3 
91|14|2 

我想在insert语句中完成所有这些。我想可能是一个使用count的子查询,但我不确定最好的方法。

回答

0

不是表内保持优先级的可能更容易计算出它使用ROW_NUMBER飞(你没有指定你的DBMS,但大多数支持它):

select 
    Organization, 
    Contact, 
    ROW_NUMBER() 
    OVER (PARTITION BY Organization 
     ORDER BY Contact) AS Priority 
from tab