为具有相似列的两个表创建视图

Create view for two tables that have similar column

我有2张桌子。

这里有 3 个示例行:

Id   SN    SyN   SSN   APU
----------------------------
'1'  'a'   'a'   'a'   'a'
'2'  'b'   'b'   'b'   'b'
'3'  'c'   'c'   'c'   'c'

示例数据:

Id      Uri     MAM
--------------------
'4'     'aa'    'aa'
'5'     'bb'    'bb'

我正在尝试创建一个将 Id 列合并为一列的视图,并具有如下所示的视图:

Header:

Id | SN   | SyN  | SSN  | APU  | Uri  | MAM
--------------------------------------------
1  | a    | a    | a    | a    | null | null
2  | b    | b    | b    | b    | null | null
3  | c    | c    | c    | c    | null | null
4  | null | null | null | null | aa   | aa
5  | null | null | null | null | bb   | bb

这是我的:

SELECT *
FROM CIR.BusinessApplication AS BA
FULL OUTER JOIN CIR.NetworkAddressableDevice AS NAD
ON BA.Id = NAD.Id 

如果代码是运行,它基本上是并排放置两个表。我也尝试了 "CREATE VIEW CIR_REPORT AS" 和代码,但我收到了一些错误。

您将无法使用 SELECT * 创建视图,因为这两个表都有一个名为 ID 的字段,您可以使用 COALESCE() 作为 ID字段,因为两者并不总是被填充,那么只需列出其他字段:

SELECT COALESCE(BA.ID,NAD.ID) AS ID
      ,SN ,SyN ,SSN ,APU ,Uri ,MAM
FROM CIR.BusinessApplication AS BA
FULL OUTER JOIN CIR.NetworkAddressableDevice AS NAD
  ON BA.Id = NAD.Id 

这是唯一跳出的错误,如果还有其他错误请将它们添加到您的问题中。

你只需要更好地定义你的select

SELECT ISNULL(BA.Id, NAD.Id) as ID, SN, SyN, SSN, APU, Uri, MAM