首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

复杂SQL求教,该如何处理

2013-09-05 
复杂SQL求教两张表:租赁合同表和房产表,根据输入时间动态查询租赁的情况注意:合同并不是连续签约的,因此同

复杂SQL求教
两张表:租赁合同表和房产表,根据输入时间动态查询租赁的情况
注意:合同并不是连续签约的,因此同一个房产的两个合同可能有间隔时间。
PACT表(房产编号、合同号、开始日期、结束日期)
House_no Pact_no StartdataEnddata
101P12010-08-212011-08-31
101P22011-10-012012-09-31
102P32011-09-012013-08-31
102P42013-09-012014-08-31
103P52010-05-012011-04-30

House表(房产编号、面积)
House_noRentarea
101100
10280
103120
104130

根据提示输入日期,分3个查询,分别查询出签约面积、空置面积、到期未退场面积
比如输入2011-09-15
则签约情况是:(只要输入的时间在签约时间内,则该套房子则为签约房产,统计其面积)
House_noRentarea
10280

则空置情况是:(输入时间小于签约开始日期或者还未签约的房产)
House_noRentarea
101100
104130

则到期未退场面积:(输入时间大于最新合同的结束日期)
House_noRentarea
103120
SQL
[解决办法]
select house_no, rentarea from house
    where house.house_no in     ( select house_no from pact
                                      where      pact.startdata <= v_query_date
                                             and pact.enddata   >= v_query_date );

select house_no, rentarea from house
    where house.house_no not in ( select house_no from pact
                                      where      pact.startdata <= v_query_date
                                             and pact.enddata   >= v_query_date );



select house_no, rentarea from house
    where house.house_no in ( select house_no from pact
                                  where  pact.enddata   <  v_query_date );

第三个需求描述的有些问题!!!

热点排行
Bad Request.