Вычисляемая формула столбца и как она может работать при условии - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть этот вызов.Я хочу получить формулу в вычисляемом столбце.В настоящее время моя формула: ((((([sponsorID]+' ')+substring(CONVERT([varchar],datepart(year,[DateCreated]),(0)),(3),(4)))+'-')+'0')+CONVERT([varchar],[ID],(0)))

Где: спонсор ID, DateCreated, ID являются столбцами в моей таблице PatientInfo.

Пример того, что формульные продукты PVT 11 10567

Автоинкремент столбца «Мой идентификатор»

Теперь Общее количество записей в моей таблице PatientInfo не достигает 500 000.и формула, которую мне дали, это [ГОД СПОНСОРКОДА - 4 ЦИФРА].Оно не должно превышать 4 цифры!

Как мне достичь этой формулы таким образом, чтобы идентификатор заканчивался, когда заканчивается год, и начинался заново в новом году.то есть папка пациента № может быть PVT 10 0128 ....... и PVT 11 0128. Это связано с тем, что в течение года общее количество новых пациентов не будет превышать 4 цифр.кроме существующих пациентов.

ПОЖАЛУЙСТА, пожалуйста, помогите.Я надеюсь, что у меня есть четкое представление о моей проблеме.если есть лучший способ добиться этого, помогите.

в ожидании вашего ответа.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2011

Будет ли работать, чтобы использовать последние 4 цифры идентификатора?Для идентификатора части выражения вы можете использовать:

RIGHT('000' + CONVERT(varchar,[ID]),4)

Конечно, вы можете получить дубликаты, если вы когда-либо вставили более 9999 строк в конкретный год.

0 голосов
/ 02 декабря 2011

Вы не можете использовать вычисляемый столбец на основе идентификатора

. Вам потребуется отдельный столбец с приращением в год и для каждого спонсора, который допускает только 0000-9999.Затем используйте это в вычисляемом столбце.

В следующей версии SQL Server вы можете использовать последовательность.До этого вы могли использовать эмулятор последовательности: http://blogs.msdn.com/b/sqlcat/archive/2006/04/10/sql-server-sequence-number.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...