联合两个条款

时间:2011-12-28 18:25:24

标签: sql-server

这是我想要做的概念。

我基本上有两组数据,一组用于当前信息,另一组用于存档信息。我需要将它们联合起来以在一个列表中显示它们。

我的查询比这复杂得多,但为了简单起见,我刚刚发布了我需要做的一般概念。

我如何才能让它为我工作?非常感谢任何帮助。

(
    with m1 as 
    (
        select --distinct 
        pfa.FacilityID
        from PatientFormCompleted
    )
    select * from m1
    left join other tables
)
union all
(
    with m1archive as 
    (
        select --distinct 
        pfa.FacilityID
        from PatientFormArchive
    )
    select * from m1archive
    left join other tables
)

2 个答案:

答案 0 :(得分:2)

可能会关闭(投票,不投票,我自己BTW)但是在你编辑之后,你确实在这个问题上付出了一些努力,所以这里就是

您可以使用多个CTE,但约束为

  • 他们互相追随
  • 只有第一个WITH被写入

请注意,您不应使用SELECT *,但要具体说明您要返回的列。

SQL声明

with m1 as 
(
    select --distinct 
    pfa.FacilityID
    from PatientFormCompleted
)
, m1archive as 
(
    select --distinct 
    pfa.FacilityID
    from PatientFormArchive
)
select * from m1
left join other tables
union all
select * from m1archive
left join other tables

答案 1 :(得分:1)

几个选项:

联盟成为一个CTE:

with m1 as 
(
    select --distinct 
    pfa.FacilityID
    from PatientFormCompleted

    union all

    select --distinct 
    pfa.FacilityID
    from PatientFormArchive

)
select * from m1
left join other tables

使用多个CTE:

with m1 as 
(
    select --distinct 
    pfa.FacilityID
    from PatientFormCompleted
)
,m1archive as 
(
    select --distinct 
    pfa.FacilityID
    from PatientFormArchive
)
select * from m1
left join other tables
union all
select * from m1archive
left join other tables