计算列公式及其如何根据条件工作

时间:2011-12-02 08:42:45

标签: sql-server-2008 tsql

我有这个挑战。我想在计算列中实现一个公式。目前我的公式是:((((([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位数。除现有病人外。

请帮助。我希望我能清楚地了解我的挑战。如果有更好的方法来实现这一点,请协助。

等待你的回复。

2 个答案:

答案 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行,则可能会出现重复。