在SQL Server中生成唯一ID

qacovj5a  于 2022-11-28  发布在  SQL Server
关注(0)|答案(1)|浏览(210)

我如何创建一个自定义的ID的表,就像22/00/00001有一个序列?对不起,我是一个新手与数据库。所有的帮助将不胜感激,谢谢!
我是医院的实习生。我需要用SQL Server重写一个数据库,我对特定的ID号有问题。它必须是year/month/id00001,例如11/22/02586。每个科室必须有自己的病人计数器。任何帮助将不胜感激,谢谢!
示例:

CREATE SEQUENCE MySequence
AS INT
START WITH 1
INCREMENT BY 1;
GO

-- Create a new table called 'PATIENT' in schema 'dbo'
-- Drop the table if it already exists

IF OBJECT_ID('dbo.PATIENT', 'U') IS NOT NULL
    DROP TABLE dbo.PATIENT
GO

-- Create the table in the specified schema
CREATE TABLE dbo.PATIENT
(
    NUM_PAT [VARCHAR] (20) NOT NULL 
        PRIMARY KEY 
        CONSTRAINT [DF_PATIENT_ID_PATIENT]
            DEFAULT FORMAT ((NEXT VALUE FOR MySequence), '22/00/00000#'), -- primary key column
    NOM_PAT [VARCHAR](50) NOT NULL,
    PREN_PAT [VARCHAR](50) NOT NULL,
    DN_PAT [DATE] NOT NULL,
    -- specify more columns here
);
GO

-- Insert rows into table 'PATIENT'
INSERT INTO PATIENT ([NOM_PAT], [PREN_PAT], [DN_PAT])
VALUES ('fred', 'alves', '25/11/1990'),
       ('alvaldo', 'merlin', '11/09/1985');
-- add more rows here
GO

2q5ifsrm

2q5ifsrm1#

我正在检查您的请求,我认为您可以通过两种方式进行处理,一种方式是定义一个表,您将在其中保存患者ID,以及一个包含计数器的列,以生成您的自定义ID示例
表名,如PatientCounter

PatientID, PatientCounter
1                 1
2                 125

或者在表patient中添加一个列Counter,我更喜欢分离的东西,但这也是一个选项,然后在查询中可以这样做。

DECLARE @PatientId as int
DECLARE @PatientCount as int

SET @PatientId = 21
SET @PatientCount = 1

SELECT   
    CAST(FORMAT(GETDATE(),'yy') as nvarchar(4)) + '/' +  
    CAST(MONTH(getDATE()) as nvarchar(4)) + '/' + 
    CAST(@PatientId as nvarchar(10)) +  
    CAST(REPLICATE('0', 5 - LEN(@PatientCount + 1)) + RTrim(@PatientCount + 1) as nvarchar(50)) as MyCustomId

结果

MyCustomId
22/11/2100002

在确认您的应用程序已经使用了这个自定义id之后,更新表中的计数器。

UPDATE PatientTable SET PatientCount = PatientCount + 1 WHERE PatientID = @PatientId

此致

相关问题