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

时间:2015-02-11 20:04:03

标签: sql sql-server view

我有2张桌子。

  • tableOne包含Id, SN, SyN, SSN, APU

以下是3个示例行:

Id   SN    SyN   SSN   APU
----------------------------
'1'  'a'   'a'   'a'   'a'
'2'  'b'   'b'   'b'   'b'
'3'  'c'   'c'   'c'   'c'
  • tableTwo包含Id, Uri, MAM

示例数据:

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

我正在尝试创建一个视图,将Id列用于一列并拥有如下视图:

标题:

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 

如果代码运行,它基本上将两个表并排放置。我也试过"创建视图CIR_REPORT AS"而代码和我收到了一些错误。

2 个答案:

答案 0 :(得分:1)

您将无法使用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 

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

答案 1 :(得分:0)

您只需要更好地定义select

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