我有两个表,我希望tb1中的所有记录都插入tb2 tb1中的值是cxr1、cxr2和cxr3,因为cxr2已经在tb2中,所以只有两个记录是cxr1和cxr3,将使用插入tb2 NOT EXISTS
操作。
但是:我还需要那些记录将连接起来,例如cxr1,cxr3并保存到col action。这在sql server 2017中通过 string_agg
但由于某种原因,我不得不降级到2016年,我不得不使用 STUFF
函数我的问题是,连接的值包括所有记录,甚至那些已经存在的记录。
我的问题是:
cmd.CommandText = "with cte as (SELECT @ID id, [DESC], [TYPE]FROM @XYZ_TBL TWHERE T.[TYPE] = @TYPE AND NOT EXISTS (SELECT ID, [DESC], [ACTION] FROM @ABC_TBL A WHERE ID = @ID AND T.[DESC] like A.[DESC]))
INSERT INTO @ABC_TBL (ID, [DESC], [TYPE], [ACTION])
select @ID, [DESC], [TYPE], STUFF((SELECT ';' + OID_PCC FROM IATA_TBL WHERE GDS = 'AGTD' ORDER BY OID_PCC FOR XML PATH('')),1,1,'') from cte)"
cmd.Parameters.Add("@ID", SqlDbType.Int).Value = Textbox1.Text
cmd.Parameters.Add("@TYPE", SqlDbType.VarChar, 255).Value = Textbox2.Text
cmd.Parameters.Add("@ACTION", SqlDbType.VarChar,255).Value = The Value should be CXR1;CXR3 the added not exists value in concatenation
起始表 XYZ_TBL
:
TYPE DESC
--------------
A CXR1
B ALC
C ADB
A CXR2
B ALC1
C ADB1
A CXR3
目标表 ABC_TBL
:
ID DESC TYPE ACTION
-------------------------------
123 CXR1 A CXR1;CXR3
123 CXR3 A CXR1;CXR3
中的现有记录 ABC_TBL
:
ID DESC TYPE ACTION
--------------------------
123 CXR2 A CXR2
暂无答案!
目前还没有任何答案,快来回答吧!