我有一个包含5列的表格(Table1
),每个结果都显示一个时区(TZID
)的ID。在单独的表(Table2
)中是这些ID的列表,并带有相应的名称。我需要加入它们,以便为每个列结果显示对应的名称。但是我似乎只能弄清楚如何加入1列的结果。例如:
表1与表2结合
在这里,我已经与Column3
的{{1}}和TZID
一起加入了。但是,如果table 2
等于零,而Column3
或Column 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
有什么实际方法吗?
答案 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