alter view [dbo].[ord_shopbestgoodsdoc_v]
as
select os.descri,os.OperatorsCategory,*,'URP32' as Source from DB01.dbo.ord_shopbestgoodsdoc a LEFT JOIN oSDOrg os ON a.sdorgid=os.SDOrgID
union
select os.descri,os.OperatorsCategory,*,'URP32' as Source from DB02.dbo.ord_shopbestgoodsdoc a LEFT JOIN oSDOrg os ON a.sdorgid=os.SDOrgID
这个视图本来是没问题的,现在加了:
LEFT JOIN oSDOrg os ON a.sdorgid=os.SDOrgID出现报错:
各视图或函数中的列名必须唯一。在视图或函数 'ord_shopbestgoodsdoc_v' 中多次指定了列名 'SDOrgID'。
现在需要连接oSDOrg 表取出 os.descri,os.OperatorsCategory 两个字段来.该怎么写?
------解决方案--------------------
这个很简单,把视图的列名相同的,用一个别名替代,
比如,视图中有两列,a.id,b.id,那么修改为a.id as id ,b.id as bid
------解决方案--------------------

你先看下你查询的结果,肯定是有两列sdorgid,这是因为你* 没有指定查哪个表的所有列
改成下面的试试:
alter view [dbo].[ord_shopbestgoodsdoc_v] as select os.descri,os.OperatorsCategory,a.*,'URP32' as Source from DB01.dbo.ord_shopbestgoodsdoc a LEFT JOIN oSDOrg os ON a.sdorgid=os.SDOrgID union select os.descri,os.OperatorsCategory,a.*,'URP32' as Source from DB02.dbo.ord_shopbestgoodsdoc a LEFT JOIN oSDOrg os ON a.sdorgid=os.SDOrgID