我在SQL Server中有一个表,其中每个唯一的location_id都有一个唯一的SiteNumber。我想要做的是,如果location_id不同,请将每个sitenumber加1。根据其唯一ID更新号码
例如:
SITENUM LOCATION_ID
1234 8801
4567 8802
8910 8803
...等等
可以说,我现在已经为LOCATION_ID插入新的价值,但我仍然SITENUM NULL
NULL 7000
NULL 7001
NULL 7002
1234 8801
4567 8802
等。
我的逻辑表明7000的sitenum应该是MAX(select * sitenum from table)
但7001下一个sitenum应该Max(select * sitenum from table)+1
眼下,下面的代码更新所有sitenums一次完全相同的值
UPDATE dbo.[Monthly Hierarchy Table]
SET SITENUM = MAX(SELECT SITENUM FROM [Monthly Hierarchy Table])+1
WHERE SITENUM IS NULL and location_id is not null
但我真的希望它做的是走行线,查看max(sitenum)
并根据非重复的location_id来增加它。必须有某种方式,我可以将每个location_id与自身进行比较,然后将sitenumber增加到无论其为null还是location_id不同的地方
我该如何去做这件事?也许我理解它的方式不对,但它是一个非常简单的问题。
我loc.id的都是独一无二的,这种解决方案实际上是一个相当位更好的正弦e我可以引用我的loc.id并根据相同的值对它们进行分组。实际上这对我的问题非常有效;) – Sonal 2009-10-01 13:48:23