如何从4个变量中获取唯一标识符

时间:2019-01-23 07:52:31

标签: sql sql-server logic

我正在设置一个工具,该工具将能够从四个变量中创建唯一的标识符,但到目前为止,我的代码正在引入完整的tempdb。即使我只使用1/10的数据im设计此过程。

我通过SSIS将数据收集到SQL Server中。 我有一张包含初始数据的表,其中包括

“ RowID,ID1,ID2,年龄,性别,CaseId,BuildingId,ID1NotValid,文件名”

行ID将始终设置

ID1并不总是设置,但对于新的uniqueId来说很重要,ID2一样 年龄和性别是确保ID2正确的两个帮助变量,但并非总是将其设置。

如果ID2的年龄和/或性别不同,则最有可能是其他人,除非ID1也被赋予且两种情况都相同。

CaseId和BuildingId并不总是设置并连接到FileName,重要的是这些ID随新的uniqueId一起可用。

ID1NotValid只是一些额外的信息,需要在结尾添加新的uniqueId


问题是ID1和ID2相互连接但并非总是同时设置,可能是ID1已设置,而其余未设置。

我试图通过所有这些情况创建一个具有所有ID类型的表的方法。我在其中添加这些的表通过在此之后添加数据来生成唯一标识符,我只是将所有其他数据(例如CaseID,BuildingID)添加回ID1和ID2

INSERT INTO temptbl_getAllid1Andid2
    SELECT RTRIM(LTRIM(id1)),  RTRIM(LTRIM(id2)), RTRIM(LTRIM(age)), RTRIM(LTRIM(gender))      
    FROM dbo.tbl_ini_dat
    WHERE id1 <> '' AND id2 <> ''
    GROUP BY id1, id2, age, gender 

INSERT INTO temptbl_getAllid1Andid2
    SELECT RTRIM(LTRIM(id1)),  RTRIM(LTRIM(id2)), RTRIM(LTRIM(age)), RTRIM(LTRIM(gender))        
    FROM dbo.tbl_ini_dat
    WHERE id1 <> '' AND id2 = ''
    AND id1 NOT IN (SELECT DISTINCT id1 FROM temptbl_getAllid1Andid2)
    GROUP BY id1, id2, age, gender

INSERT INTO temptbl_getAllid1Andid2
    SELECT RTRIM(LTRIM(id1)),  RTRIM(LTRIM(id2)), RTRIM(LTRIM(age)), RTRIM(LTRIM(gender))  
    FROM dbo.tbl_ini_dat
    WHERE id1 = '' AND id2 <> ''
    AND id2 NOT IN (SELECT DISTINCT id2 FROM temptbl_getAllid1Andid2)
    GROUP BY id1, id2, age, gender

0 个答案:

没有答案