我有这个挑战。我想在计算列中实现一个公式。目前我的公式是:((((([sponsorID]+' ')+substring(CONVERT([varchar],datepart(year,[DateCreated]),(0)),(3),(4)))+'-')+'0')+CONVERT([varchar],[ID],(0)))
其中:sponsorID,DateCreated,ID是我的表PatientInfo中的列。
公式产品的样本 PVT 11 10567
我的ID列自动增量
现在我的名为PatientInfo的表中的记录总数达到了500,000。我给出的公式是[SPONSORCODE YEAR - 4 DIGIT]。它不得超过4位数!
我如何以这样的方式实现这个公式:当一年结束并在新的一年重新开始时,id停止。即病人文件夹号码可以是PVT 10 0128 .......和PVT 11 0128.这是因为在一年内新病人的总数不会超过4位数。除现有病人外。
请帮助。我希望我能清楚地了解我的挑战。如果有更好的方法来实现这一点,请协助。
等待你的回复。
答案 0 :(得分:0)
您无法使用基于ID的计算列
您每年需要一个单独的递增列,每个赞助商只允许0000-9999。然后,在计算列中使用它。
在下一版本的SQL Server中,您可以使用序列。在此之前,您可以使用序列模拟器:http://blogs.msdn.com/b/sqlcat/archive/2006/04/10/sql-server-sequence-number.aspx
答案 1 :(得分:0)
是否可以使用ID的最后4位数?对于表达式的ID部分,您可以使用:
RIGHT('000' + CONVERT(varchar,[ID]),4)
当然,如果您在特定年份插入了超过9999行,则可能会出现重复。