我是使用MERGE语句和GUID的新手。下面的Statement中的Insert生成相同的GUID(NEWID()为所有记录生成相同的GUID)。 在这种情况下,有人可以指导我如何生成唯一的GUID吗?
MERGE INTO TABLE_A A
USING (SELECT NEWID() AS SRCID,STU_ID,CAMPUS_ID,DT_ENTRY,SCH_YR,DTS FROM
TABLE_B) B ON (B.DTS = A.DLM)
WHEN MATCHED THEN UPDATE
SET A.KEY1 = B.STU_ID
,A.KEY2 = B.CAMPUS_ID
,A.KEY3 = B.SCH_YR
,A.KEY4 = B.DT_ENTRY
,A.DLM = B.DTS
,A.SOURCE_ID = B.SRCID
,A.TYPE = 'TYPE'
WHEN NOT MATCHED THEN INSERT
(A.KEY1
,A.KEY2
,A.KEY3
,A.KEY4
,A.DLM
,A.SOURCE_ID
,A.TYPE) VALUES
(B.STU_ID
,B.CAMPUS_ID
,B.SCH_YR
,B.DT_ENTRY
,B.DTS
,NEWID()
,'TYPE')
答案 0 :(得分:1)
在当前语法中,将对查询一次评估NEWID()BIF调用。 您通常可以通过取一列并以某种方式将其作为BIF调用的参数来强制执行每一行的评估。 NEWID()接受0和1作为参数,因此您可以尝试执行以下操作-假设STU_ID是整数列:
NEWID(ISNULL(STU_ID,0)* 0)