我有一个问题,我的当前脚本正确分配给每个参考实体。
update dbo.expozitura
set reference_subjektu = replicate('0', 8-len(rn) )+b.rn
from dbo.expozitura a
INNER JOIN
(
select dbo.expozitura.cislo_subjektu , cast(ROW_NUMBER() OVER (order by cislo_subjektu) as varchar) as rn
from dbo.expozitura
)b ON b.cislo_subjektu = a.cislo_subjektu
select * from dbo.expozitura;
输出:(步骤1)
cislo_subjektu reference_subjektu organizace adresa_ulice psc ico
1 00000001 2 7774588
2 00000002 0 Linkoln 50 7774588
3 00000003 0 403 31 729544866
4 00000004 0 8544569
5 00000005 0 Linkoln 66 578 99 8542155
6 00000006 0 558 41 8542155
第2步:
如果有任何“dbo.expozitura”具有相同的“ico”,我需要再说一次。因此,根据具体的“ico”,将他的第一个参考文献分配给所有相同的参考文献。这样会更多。
输出:
如果一切正确,这应该是最终结果。
cislo_subjektu reference_subjektu organizace adresa_ulice psc ico
1 00000001 2 7774588
2 00000001 0 Linkoln 50 7774588
3 00000003 0 403 31 729544866
4 00000004 0 8544569
5 00000005 0 Linkoln 66 578 99 8542155
6 00000005 0 558 41 8542155
请帮我解决我的问题。
答案 0 :(得分:0)
您可以使用可更新的公用表表达式来实现此目的:
With x as (
Select
reference_subjektu,
min(reference_subjektu) over (partition by ico) nval
from
expozitura
) update
x
set
reference_subjektu = nval
where
reference_subjektu != nval;
<强> Example SQLFiddle 强>