আমি আপনার সাথে শেয়ার করতে চাই আমি কীভাবে এই ধরণের প্রশ্নটিকে সম্বোধন করি। আমার কেসটি টেবিল 2 এর ফলাফলটি গতিশীল হওয়ার কারণে সামান্য আলাদা এবং কলামের সংখ্যাগুলি টেবিল 1 এর চেয়ে কম হতে পারে। তবে ধারণাটি একই রকম।
প্রথমত, টেবিল 2 এর ফলাফল পান।
এরপরে, এটি অপরিবর্তিত করুন।
তারপরে ডায়নামিক এসকিউএল ব্যবহার করে আপডেট ক্যোয়ারী লিখুন। নমুনা কোড 2 টি সাধারণ টেবিল - টিবিএলএ এবং টিবিএলবি পরীক্ষার জন্য লেখা হয়
--CREATE TABLE tblA(id int, col1 VARCHAR(25), col2 VARCHAR(25), col3 VARCHAR(25), col4 VARCHAR(25))
--CREATE TABLE tblB(id int, col1 VARCHAR(25), col2 VARCHAR(25), col3 VARCHAR(25), col4 VARCHAR(25))
--INSERT INTO tblA(id, col1, col2, col3, col4)
--VALUES(1,'A1','A2','A3','A4')
--INSERT INTO tblB(id, col1, col2, col3, col4)
--VALUES(1,'B1','B2','B3','B4')
DECLARE @id VARCHAR(10) = 1, @TSQL NVARCHAR(MAX)
DECLARE @tblPivot TABLE(
colName VARCHAR(255),
val VARCHAR(255)
)
INSERT INTO @tblPivot
SELECT colName, val
FROM tblB
UNPIVOT
(
val
FOR colName IN (col1, col2, col3, col4)
) unpiv
WHERE id = @id
SELECT @TSQL = COALESCE(@TSQL + '''
,','') + colName + ' = ''' + val
FROM @tblPivot
SET @TSQL = N'UPDATE tblA
SET ' + @TSQL + '''
WHERE id = ' + @id
PRINT @TSQL
--EXEC SP_EXECUTESQL @TSQL
PRINT @TSQL
ফলাফল: