根据Teradata SQL中的某些条件连接某些行

时间:2016-10-27 08:31:45

标签: sql concatenation teradata dynamic-sql

我有一个具有以下结构的表:

Sr.No | Timestamp | Type
1        A          x
1        B          y
1        C          v 
1        D          w
2        E          j 
2        F          l
3        G          o

我想计算所有Sr.No的时间差,以及时差小于12小时的地方,我想连接" Type"柱。 因此,如果A-B = 11小时且E-F = 10小时,则输出应为:

Sr.No | Type
1       x + y
1       v 
1       w
2       j + l
3       o

如何在Teradata SQL中执行此操作?

1 个答案:

答案 0 :(得分:0)

我不知道tera数据但在我看来你主要对sql感兴趣。在下面的sql中,我只是简单地减去时间戳值来查找小时差异。您需要根据tera数据进行转换。请在下面找到示例sql:

select t1.sno, t1.type | '+' |t2.type 
from tbl t1
inner join tbl t2 on t1.sno = t2.sno and t1.type <> t2.type
where t1.timestamp -t2.timestamp < 12
union 
select t3.sno,t3.type
from tbl t3
left join
(
    select t5.sno, t5.type,t6.type 
    from tbl t5
    inner join tbl t6 on t5.sno = t6.sno and t5.type <> t6.type
    where t5.timestamp -t6.timestamp < 12
) t4 on t3.sno = t4.sno and (t3.type=t4.type1 or t3.type=t4.type2)
where t4.sno is null