如何将一个表中的3列与另一表中的1列连接在一起?

时间:2019-01-14 12:17:51

标签: sql sql-server

我有一个包含5列的表格(Table1),每个结果都显示一个时区(TZID)的ID。在单独的表(Table2)中是这些ID的列表,并带有相应的名称。我需要加入它们,以便为每个列结果显示对应的名称。但是我似乎只能弄清楚如何加入1列的结果。例如:

表1与表2结合

enter image description here

在这里,我已经与Column3的{​​{1}}和TZID一起加入了。但是,如果table 2等于零,而Column3Column 1不等于零,那么我需要2中的TZID来从中返回相应的table2 name

当前,我有以下内容:

Table2

我尝试使用REPLACE,是否可以用另一个表的结果替换?

SELECT Column1 ,Column2 ,Column3 ,Table2.TZID as 'TZID from Table2' ,Table2.[DESCRIPT] as 'Name from Table2' FROM Table1 left outer join Table2 on Table2.TZID=Table1.Column3

有什么实际方法吗?

2 个答案:

答案 0 :(得分:0)

我认为您想加入优先级,如果不为0,则首先加入Column3。如果Column3为0,则加入Column1。如果第1列也为0,则与Column2加入,对吗?

如果正确,那么您需要这样的sql查询:

SELECT 
      Column1 
     ,Column2 
     ,Column3
     ,Table2.TZID as 'TZID from Table2'
     ,Table2.NAME as 'Name from Table2'

  FROM Table1
  LEFT OUTER join Table2 on Table2.TZID =
  CASE
    WHEN Table1.Column3 <> 0
       THEN  Table1.Column3
    WHEN Table1.Column1 <> 0
       THEN Table1.Column1
    WHEN Table1.Column2 <> 0
       THEN Table1.Column2
  END 

答案 1 :(得分:0)

如果需要在一个查询中连接所有树列,则可以多次连接一个表并将其重命名。

> SELECT 
>       Column1 
>      ,Column2 
>      ,Column3
>      ,t2c1.TZID as 'TZID Column1'
>      ,t2c1.NAME as 'Name Column1'
>      ,t2c2.TZID as 'TZID Column2'
>      ,t2c2.NAME as 'Name Column2'
>      ,t2c3.TZID as 'TZID Column3'
>      ,t2c3.NAME as 'Name Column3'
> 
> FROM Table1   LEFT OUTER join Table2 t2c1 on t2c1.TZID = Table1.Column1  
>               LEFT OUTER join Table2 t2c2 on t2c2.TZID = Table1.Column2    
>               LEFT OUTER join Table2 t2c3 on t2c3.TZID = Table1.Column3