使用超过 1 个时自行加入 table
Self join when using more than 1 table
-- BEFORE -- 此自联接中使用的所有字段都来自同一个 'Prime' table :
SELECT
a.*,
b.column1 as column1b,
b.column2 as column2b,
b.column3 as column3b,
b.column4 as column4b,
b.column5 as column5b,
b.next_column5 as next_column5b,
b.column6 as column6b,
b.column7 as column7b,
b.column8 as column8b, --
b.column9 as column9b,
b.column10 as column10b,
CASE
WHEN a.column5 > b.column5 THEN a.column5
WHEN b.column5 > a.column5 THEN b.column5
ELSE a.column5
END AS TheStart,
CASE
WHEN b.next_column5 > today() AND b.column8 = 0
THEN 1
ELSE 0
END AS TheEnd
FROM
prime a , prime b
WHERE
a.column11 = b.column11
AND a.conper = b.conper
AND a.condtn = b.condtn
AND a.genass = b.genass
AND a.column3 IN ('A_B', 'A_nB')
AND b.column3 = 'B'
AND a.prime_sum_c > 0
ORDER BY
column11, column1, column2, column6, column7, column5
-- 之后--
[column8]
字段现在来自另一个名为 [OtherTable]
的 table
问题:我应该如何写下新代码才能继续使用 SELF JOIN 并考虑到由于 [OtherTable].column8
[我们现在正在处理 2 个不同的 tables =15=]
您可以像这样修改查询以使用 join
:
select
a.*,
b.column1 as column1b,
b.column2 as column2b,
b.column3 as column3b,
b.column4 as column4b,
b.column5 as column5b,
b.next_column5 as next_column5b,
b.column6 as column6b,
b.column7 as column7b,
o.column8 as column8b, -- from OtherTable
b.column9 as column9b,
b.column10 as column10b,
CASE
WHEN a.column5 > b.column5 THEN a.column5
WHEN b.column5 > a.column5 THEN b.column5
ELSE a.column5
END AS TheStart,
case
when b.next_column5 > today() and o.column8 = 0
then 1
else 0
end as TheEnd
from prime a
inner join prime b on a.column11 = b.column11
and a.conper = b.conper
and a.condtn = b.condtn
and a.genass = b.genass
left join OtherTable o on <<your join condition>> -- join with OtherTable here
where a.column3 in ('A_B','A_nB')
and b.column3 = 'B'
and a.prime_sum_c > 0
order by column11, column1, column2, column6, column7, column5
-- BEFORE -- 此自联接中使用的所有字段都来自同一个 'Prime' table :
SELECT
a.*,
b.column1 as column1b,
b.column2 as column2b,
b.column3 as column3b,
b.column4 as column4b,
b.column5 as column5b,
b.next_column5 as next_column5b,
b.column6 as column6b,
b.column7 as column7b,
b.column8 as column8b, --
b.column9 as column9b,
b.column10 as column10b,
CASE
WHEN a.column5 > b.column5 THEN a.column5
WHEN b.column5 > a.column5 THEN b.column5
ELSE a.column5
END AS TheStart,
CASE
WHEN b.next_column5 > today() AND b.column8 = 0
THEN 1
ELSE 0
END AS TheEnd
FROM
prime a , prime b
WHERE
a.column11 = b.column11
AND a.conper = b.conper
AND a.condtn = b.condtn
AND a.genass = b.genass
AND a.column3 IN ('A_B', 'A_nB')
AND b.column3 = 'B'
AND a.prime_sum_c > 0
ORDER BY
column11, column1, column2, column6, column7, column5
-- 之后--
[column8]
字段现在来自另一个名为 [OtherTable]
问题:我应该如何写下新代码才能继续使用 SELF JOIN 并考虑到由于 [OtherTable].column8
[我们现在正在处理 2 个不同的 tables =15=]
您可以像这样修改查询以使用 join
:
select
a.*,
b.column1 as column1b,
b.column2 as column2b,
b.column3 as column3b,
b.column4 as column4b,
b.column5 as column5b,
b.next_column5 as next_column5b,
b.column6 as column6b,
b.column7 as column7b,
o.column8 as column8b, -- from OtherTable
b.column9 as column9b,
b.column10 as column10b,
CASE
WHEN a.column5 > b.column5 THEN a.column5
WHEN b.column5 > a.column5 THEN b.column5
ELSE a.column5
END AS TheStart,
case
when b.next_column5 > today() and o.column8 = 0
then 1
else 0
end as TheEnd
from prime a
inner join prime b on a.column11 = b.column11
and a.conper = b.conper
and a.condtn = b.condtn
and a.genass = b.genass
left join OtherTable o on <<your join condition>> -- join with OtherTable here
where a.column3 in ('A_B','A_nB')
and b.column3 = 'B'
and a.prime_sum_c > 0
order by column11, column1, column2, column6, column7, column5