我有两个表(
t1
,t2
)要根据 id 和年份月份加入 YYYY-MM
一般来说,连接是这样的,例如:
SELECT t1.id, t1.month, t2.price
FROM t1
JOIN t2
ON t1.id = t2.id AND t1.year_month = t2.year_month
现在,对于一个特定的
t1.id
,例如t1.id = 'a'
,我需要加入上个月的t2
即
SELECT t1.id, t1.month, t2.price
FROM t1
JOIN t2
ON t1.id = t2.id
AND (t1.year_month = t2.year_month if t1.id != 'a'
else t1.year_month = t2.year_month - 1 month)
我认为要做的是创建一个临时表,
t2
的年月为id = 'a'
增加一个月。但是t2
是一张非常大的桌子,所以我真的不想走这条路线。
实现这一目标的最佳方法是什么?谢谢!
基于@JohnRotenstein,我尝试在
CASE
子句中使用 JOIN
语句,并且它起作用了。
这里有一个示例代码,供任何因同一问题来到这里的人使用。
SELECT t1.id, t1.month, t2.price
FROM t1
JOIN t2
ON t1.id = t2.id
AND t1.year_month = (
CASE
WHEN t1.id = 'a' THEN t2.year_month - 1 month
ELSE t2.year_month
END
)