首页 > 解决方案 > 用于进行更正的数据库视图

问题描述

SQL(SQL Server)中是否有一种简单的方法来获取原始(只读)数据表并对其施加“更正”,其中更正将来自单独的表,并且更正数据集的输出将是在单独的视图中显示?

例如,假设这是原始数据表(其中“Pineapples”是错误的):

在此处输入图像描述

这是更正表(在这种情况下,只有一个更正):

在此处输入图像描述

所需的视图将导致提供以下更正的数据集:

在此处输入图像描述

有关如何编写查询或过程以获取此类更正数据的任何指针?我有一种很明显的感觉(就像一个带有调整的连接),但非常感谢任何指针。想了很久,还没破解。

标签: sqlsql-server

解决方案


您可以coalesce使用outer join

select o.pk_id, o.col1, coalesce(c.col2, o.col2) newcol2
from original o
    left join corrected c on o.pk_id = c.fk_id

coalesce返回它找到的第一个非空值,并且outer join说从original表中获取所有内容并包括表中的任何匹配记录corrected。因此,当有匹配时,c.col2将不会null并且将被返回。否则,将c.col2被退回。nullo.col2


推荐阅读