首页 > 解决方案 > 如何将一个表上的 3 列与另一表中的 1 列连接起来?

问题描述

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

表 1 与表 2 连接

在此处输入图像描述

在这里,我加入Column3TZIDfrom table 2。但是如果Column3等于零,Column 1或者2不是,我需要TZIDfromtable2返回对应name的 from Table2

目前我有以下内容:

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  

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

REPLACE(Column1, Table2.TZID, Table2.[DESCRIPT]) AS 'Column1 Mask'

有没有办法真正做到这一点?

标签: sqlsql-server

解决方案


我想你想加入优先级,如果不是 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 

推荐阅读