Самый простой способ - добавить пустые значения по умолчанию в rowsetA при выполнении UNION с rowsetB.
@rowsetA = EXTRACT A string,
B string,
C string
FROM @path
USING Extractors.Csv();
@rowsetB = EXTRACT A string,
B string,
C string,
D string,
E string
FROM @path1
USING Extractors.Csv();
@union = SELECT A,B,C,null AS D,null AS E FROM @rowsetA
UNION
SELECT A,B,C,D,E FROM @rowsetB;
Таким образом, у вас будет нулевое значение для пропущенных столбцов.Обратите внимание, что для других типов данных, таких как DateTime, int и т. Д., Вы просто устанавливаете default (int?) Вместо null.
Надеюсь, это поможет