我们可以在连接处使用case语句
我需要根据
这样的条件加入if month(fr_yr) <= month(to_yr)
then
join on start date between month(fr_yr) and month(to_yr)
else
join on start date between month(to_yr) and month(fr_yr)
选择数据时
谢谢,
答案 0 :(得分:1)
SQL的连接语法非常通用,可以用来模拟关系操作(经典的getline
来执行cin.eof()
)。我想它可以达到你认为你总是需要加入的程度。但是值得记住类似于逻辑OUTER JOIN
的关系运算符,例如UNION
:
OR
答案 1 :(得分:0)
您可以使用任何有效的逻辑语句作为连接条件,并且可以将case表达式用作此类语句的一部分。
所以你可以这样做:
create table #t1 (i int)
create table #t2 (i int, j int)
insert #t1 values (1), (2)
insert #t2 values (1, 2), (2, 3), (4, 1), (5, 2)
select *
from #t1
join #t2 on #t1.i between case when #t2.i<=#t2.j then #t2.i else #t2.j end and case when #t2.i<=#t2.j then #t2.j else #t2.i end
当然,这将如何影响表演另一个故事。就个人而言,我宁愿UNION ALL两个查询。
答案 2 :(得分:0)
这是一个非常奇怪的要求。
这是你需要的join子句(不需要工会,临时表或任何过于复杂的东西)
ON StartDate BETWEEN MONTH(fr_yr) AND MONTH(to_yr)
OR StartDate BETWEEN MONTH(to_yr) AND MONTH(fr_yr)
答案 3 :(得分:-1)
不,你不能那样做。 您不能使用if条件来更改select语句中的连接 您可以使用以下连接子句
join on startdate between month(fr_yr) and month(to_yr)
OR
startdate between month(to_yr) and month(fr_yr)