SQL按日期查询

时间:2018-12-27 10:57:57

标签: sql nested subquery

我遇到一个SQL查询问题,我想搜索在一段时间内终止的合同。这是我的示例数据,因此我想获取201803的contract1和201804的contract2-两个合约在第一个月内结束;如果此数据来自表rcontracts,我应该使用什么查询?谢谢

data

2 个答案:

答案 0 :(得分:0)

用列名替换后,您可以尝试此查询吗?

SELECT t1.dt + 1, 
       t1.c 
FROM   rcontracts t1 
       LEFT JOIN rcontracts t2 
              ON t1.c = t2.c 
                 AND t1.dt + 1 = t2.dt 
WHERE  t2.c IS NULL 
       AND t1.dt < (SELECT Max(dt) 
                    FROM   rcontracts) 

答案 1 :(得分:0)

您只想要not exists吗?

select rc.*
from rcontracts rc
where not exists (select 1
                  from rcontracts rc2
                  where rc2.contract1 = rc2.contract2 and
                        rc2.yyyymm > 201803
                 );

还是聚合?

select rc.contract
from rcontracts rc
group by rc.contract
having max(rc.yyyymm) < 201804;