我想将表与早期备份进行比较,并确定所有差异。
虽然很容易找到所有已更改的数据集(使用MINUS
运算符),但很难同时选择已更改属性的名称(或者如果有多个属性则为任何已更改的属性启动)改变)。
到目前为止,我通过手动比较数据集找到了差异,但我仍然对一个解决方案感兴趣,该解决方案将打印出已编辑的数据集以及更改的属性,无需将列名称硬编码到查询。
示例:
备份表(MyTable_Backup):
ID | Name | Value
-----------------
1 | Alie | 15
2 | Bob | 7
3 | Eve | 0
当前表(MyTable):
ID | Name | Value
-----------------
1 | Alice| 15
2 | Bob | 8
3 | Eve | 0
预期产出:
ID | Name | Value | DiffAttribute
---------------------------------
1 | Alice| 15 | Name
2 | Bob | 8 | Value
答案 0 :(得分:-1)
尝试:
Select a.ID, a.Name, A.Value
, case when a.Name <> B.Name and
a.Value <> B.Value
then 'Name,Value'
when a.Name <> B.Name then 'Name'
when a.Value <> B.Value then 'Value'
when b.value is null then 'Missing'
end DiffAttribute
from MyTable a
left join MyTable_Backup b
on a.id = b.id