Sql server SQL Server-连接查询

Sql server SQL Server-连接查询,sql-server,Sql Server,行计数的结果是 Select No, A, B, C into #temp1 from Table1 Where month = 'Jan' Select No, D, E, F into #temp2 from Table2 Where month = 'Jan' Select No, G, H, I into #temp3 from Table3 Where month = 'Jan' *请注意,行计数结果将因所选月份而异 我想将三个表的结果合并为一个,输出如下: #temp1 = 0 #

行计数的结果是

Select No, A, B, C into #temp1 from Table1 Where month = 'Jan'
Select No, D, E, F into #temp2 from Table2 Where month = 'Jan'
Select No, G, H, I into #temp3 from Table3 Where month = 'Jan'
*请注意,行计数结果将因所选月份而异

我想将三个表的结果合并为一个,输出如下:

#temp1 = 0
#temp2 = 0
#temp3 = 2
我试过:

No | A  | B | C | D | E | F | G | H | I
----------------------------------------
但我知道查询是错误的,因为表#temp1中没有结果,所以不会有输出


请帮忙。谢谢

如果您想显示所有结果,您的查询可以如下所示,但如果您的目的不同,请进一步解释

Select t1.No, t1.A, t1.B, t1.C, t2.D, t2.E, t2.F, t3.G, t3.H, t3.I
From #temp1 t1 
Left Join #temp2 t2 on t1.No = t2.No
Left Join #temp3 t3 on t1.No = t3.No

您可以为您的案例使用完全外部连接。像这样试试

    Select t1.No, t1.A, t1.B, t1.C, t2.D, t2.E, t2.F, t3.G, t3.H, t3.I
    From #temp1 t1, #temp2 t2 , #temp3 t3 

假设
No
是唯一的,则需要在所有三个对象之间进行完整的外部联接,或者在所有三个对象之间使用聚合函数进行
UNION all
together@Nick.McDermaid-是的,谢谢大家。我现在可以得到我想要的结果,但是如果你能解释更多关于完全外连接的内容。我已经尝试了完全外部连接,但是如何才能让输出显示No,因为我将其编码为t1。No,但结果将是t3。No。输出将在No字段上显示NULL。此处的
No
列将为
NULL
。OP提到
#temp1
有0行。这可能是
选择合并(t1.No,t2.No,t3.No),t1.a,…
@迈克尔:是的,你是对的。我编辑了select语句。Thanks@Dia当前位置请告诉我们您想做什么achieve@NewUser是的,这就是我要找的。选择合并(t1.No、t2.No、t3.No)。谢谢大家的帮助和快速反应,我想展示所有结果。我尝试了您的查询,但结果是零/无输出,这是错误的,因为我在t3中有两个数据display@Dia例如我看到你的问题得到了回答。如果你需要更多的帮助,请写信。
CREATE TABLE #temp1
  (
     no    INT,
     A     VARCHAR(10),
     B     VARCHAR(10),
     C     VARCHAR(10),
     MONTH VARCHAR(10)
  )

CREATE TABLE #temp2
  (
     no    INT,
     D     VARCHAR(10),
     E     VARCHAR(10),
     F     VARCHAR(10),
     MONTH VARCHAR(10)
  )

CREATE TABLE #temp3
  (
     no    INT,
     G     VARCHAR(10),
     H     VARCHAR(10),
     I     VARCHAR(10),
     MONTH VARCHAR(10)
  )

INSERT INTO #temp3
VALUES      (1,
             'G1',
             'H1',
             'I1',
             'Jan'),
            (2,
             'G2',
             'H2',
             'I2',
             'Jan')

    SELECT coalesce(t1.No,t2.no,t3.no) as No,
       t1.A,
       t1.B,
       t1.C,
       t2.D,
       t2.E,
       t2.F,
       t3.G,
       t3.H,
       t3.I
FROM   #temp1 t1
       FULL OUTER JOIN #temp2 t2
                    ON t1.No = t2.No
       FULL OUTER JOIN #temp3 t3
                    ON t1.No = t3.No