获得两个日期的最大值从Teradata的两个不同的表 - 情景?
题
我有两个表Table 1和Table。表2由具有更少的行比表1的数。在这两个表有两个日期列在表2表1和caldate2 caldate1。所以现在我需要加入这两个表,并得到最大的两个日期列,并保持在新表。但是,如果我们内部联接这两个表table1中的这行不存在的表2中不会进入决赛桌。因此,我们需要像一些事情
table1
left outer join
table2
但有这两个日期具有空值的情况。这样我就可以使用聚结,得到下面的场景正确的数据..
1。排在table1中是不存在的表2中 - >然后在表1中caldate1应该进入决赛桌。
2。排在表1有在表2和表1中的caldate1和表2的caldate2是空 - >然后空应该进入决赛桌的日期列
3。排在表1有在表2和caldate1不是null caldate2为空 - >然后caldate1应该进入决赛桌。
4。排在表1有在表2和caldate1为null,并且caldate2不为空 - >然后caldate2应该进入决赛桌
5。排在表1有在表2和caldate1大于caldate2 - > caldate1应该进入决赛桌
6。排在表1有在表2和caldate2大于caldate1 - > caldate2应该进入决赛桌
我们不需要考虑表2中未与表1匹配的行。所以基本上我需要最新的caldate的所有table1的行如果某行有两个表所示。提前致谢。我没能获得正确的功能做it.Is它凝聚?
解决方案 2
我想在做类似下面来满足我的要求的。
SELECT
a.number,
CASE WHEN ZEROIFNULL(a.caldate1) > ZEROIFNULL(b.caldate2)
THEN a.caldate1 -- This is working
ELSE
b.caldate2
END AS caldate
/*COALESCE (a.caldate1,caldate2) AS caldate*/ -- This is not giving max of dates
FROM
table1 a
LEFT OUTER JOIN
table2 b
ON
a.number = b.number
感谢您的帮助。现在,它按上述方法进行。
其他提示
从上面的查询,如果一些目前在表2 并没有表1 后,这些记录将被删除,你可以使用全外号码在上面的查询加盟。
或见下面的查询将覆盖该场景也。
sel number,max(date1) from (
sel number,max(caldate1) as date1
from table1
union
sel number,max(caldate2) as date1
from table2
)tmp ;
不隶属于 StackOverflow