Вы можете использовать XPath в SQL Server для доступа к узлам данных XML.
Вот пример использования ваших данных.
declare @test xml
set @test = '<product><productID>1</productID><pdesc>ProductDesc</pdesc></product>'
SELECT
@test.value('(/product/productID/node())[1]', 'nvarchar(max)') as productID,
@test.value('(/product/pdesc/node())[1]', 'nvarchar(max)') as pdesc
Оттуда вы сможете выполнить свое объединениенапример:
SELECT 1,
xmlfield1.value('(/product/productID/node())[1]', 'int') as id,
xmlfield1.value('(/product/pdesc/node())[1]', 'nvarchar(max)') as desc
union
SELECT 2,
xmlfield2.value('/product/itemid/node())[1]', 'int') as id,
xmlfield2.value('/product/itemname/node())[1]', 'nvarchar(max)') as desc
если ваши данные находятся в одном столбце, вы можете использовать оператор case для их разрешения.
case
when merchantId = 1 data.value('(/product/productID/node())[1]', 'int')
else data.value('/product/itemid/node())[1]', 'int')
end as id