【发布时间】:2014-08-20 21:49:03
【问题描述】:
我正在使用以下脚本从 3 个表创建一个视图。当在 MUES_OUT_2010_07 和 MUES_DME_2010_07 而不是在 MUES_PHY_2010_07 中找到 HCPCS 时,我遇到了问题
CREATE VIEW MUES AS
SELECT COALESCE(TPHY.HCPCS, TOUT.HCPCS, TDME.HCPCS) AS HCPCS
, COALESCE(UNITS_PHY, -1) AS UNITS_PHY
, COALESCE(UNITS_OUT, -1) AS UNITS_OUT
, COALESCE(UNITS_DME, -1) AS UNITS_DME
FROM MUES_PHY_2010_07 TPHY
FULL OUTER JOIN MUES_OUT_2010_07 TOUT
ON TPHY.HCPCS = TOUT.HCPCS
FULL OUTER JOIN MUES_DME_2010_07 TDME
ON TPHY.HCPCS = TDME.HCPCS
GO
我的表格如下所示
CREATE TABLE [dbo].[MUES_OUT_2010_07](
[HCPCS] [char](5) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[UNITS_OUT] [smallint] NULL,
CONSTRAINT [PK_MUES_OUT_2010_07] PRIMARY KEY CLUSTERED
(
[HCPCS] ASC
)WITH FILLFACTOR = 90 ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[MUES_DME_2010_07](
[HCPCS] [char](5) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[UNITS_DME] [smallint] NULL,
CONSTRAINT [PK_MUES_DME_2010_07] PRIMARY KEY CLUSTERED
(
[HCPCS] ASC
)WITH FILLFACTOR = 90 ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[MUES_PHY_2010_07](
[HCPCS] [char](5) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[UNITS_PHY] [smallint] NULL,
CONSTRAINT [PK_MUES_DME_2010_07] PRIMARY KEY CLUSTERED
(
[HCPCS] ASC
)WITH FILLFACTOR = 90 ON [PRIMARY]
) ON [PRIMARY]
GO
insert into MUES_OUT_2010_07 select 'E1036', 1
insert into MUES_DME_2010_07 select 'E1036', 1
我希望视图创建一条如下所示的记录,因为 HCPCS 'E1036' 不在 MUES_PHY_2010_07 表中
HCPCS UNITS_PHY UNITS_OUT UNITS_DME
E1036 -1 1 1
但它会创建如下两条记录
E1036 -1 -1 1
E1036 -1 1 -1
我在视图中做错了什么
【问题讨论】:
-
我认为问题不在于合并。我认为这与两个完整的外部连接有关。要么没有足够的唯一条件在连接上只生成一行,要么一个表意外地有 2 条记录,而您只有一条记录。
标签: sql sql-server-2005 coalesce