Как отключить таблицу с именами столбцов
У меня есть две таблицы с похожими записями. У меня есть результат следующим образом:
используя следующий запрос
Select
New.ParentId
,New.FatherFirstName
,New.FatherLastName
from ParentsUpdationDetails New
where New.parentId=15999
union all
select
Old.ParentId
,Old.FatherFirstName
,Old.FatherLastName
from parents Old
where Old.parentId=15999
Мне нужно отключить и хочу следующий вывод:
1 ответ
Решение
Вы должны быть в состоянии справиться с этим, используя CROSS APPLY с несколькими конструкторами табличных значений и комбинируя их с помощью INNER JOIN.
когда вы используете Cross Apply с (VALUES (Field1), (Field2)), он действует аналогично UNPIVOT в том смысле, что вы получаете строку для каждого поля, которое вы перечисляете в своем TVC
SELECT ca.Field, ca.New, lj.Old
FROM ParentsUpdationDetails new
CROSS APPLY (
VALUES ('ParentID', CAST(ParentID AS VARCHAR)), -- All datatypes must match
('FatherFirstName', FatherFirstName),
('FatherLastName', FatherLastName)
) ca(Field, New)
INNER JOIN (
SELECT ParentID, Field, Old
FROM Parents old
CROSS APPLY (
VALUES ('ParentID', CAST(ParentID AS VARCHAR)), -- All datatypes must match
('FatherFirstName', FatherFirstName),
('FatherLastName', FatherLastName)
) ca(Field, Old)
) lj ON new.ParentID = lj.ParentID AND ca.Field = lj.Field
WHERE new.ParentID = 15999
Имейте в виду, что вы будете преобразовывать типы данных не varchar в varchars, чтобы это работало