我需要创建一个名为“PROCESS”的表,其主键由两列(IdOffice,IdProcess)组成,问题是我需要“IdProcess”包含IDENTITY属性并依次增加,但取决于字段“IdOffice”的值如下:修改具有IDENTITY属性的列中的数据条目
如果“IdOffice”相同,则必须逐个增加“IdProcess”,因此我更加清楚地放置了一张图片:
我该怎么做呢?
感谢您的帮助。
我需要创建一个名为“PROCESS”的表,其主键由两列(IdOffice,IdProcess)组成,问题是我需要“IdProcess”包含IDENTITY属性并依次增加,但取决于字段“IdOffice”的值如下:修改具有IDENTITY属性的列中的数据条目
如果“IdOffice”相同,则必须逐个增加“IdProcess”,因此我更加清楚地放置了一张图片:
我该怎么做呢?
感谢您的帮助。
你不能用IDENTITY做到这一点。你需要有一个单独的列。问题是,这可能是非常有问题的维护。如果你有这样的数据:
IdOffice IdProcess
--------- ----------
1 1
1 2
1 3
2 1
2 2
当你删除第二行会发生什么?是否需要为IdOffice = 1的所有值重新计算IdProcess?
假设您有其他一些要排序的列,您可以在查询时始终生成此数字,而不必支付存储数据的成本并在表更改时处理维护。
SELECT IdOffice, IdProcess = ROW_NUMBER() OVER
(PARTITION BY IdOffice ORDER BY DateCreated)
FROM dbo.YourTable
ORDER BY IdOffice, IdProcess;
我也建议你有这个表的主键是身份。然后将IdOffice和IdProcess视为行中的数据。如果你这样做,那么亚伦在查询时计算IdProcess的建议就更有意义了。