Oracle中使用in条件,以多个字段作为in的内容

1.我原来的sql语句,在有值的情况下没有问题

 SELECT t1.SITE_NAME as sitename,t2.TYPE_NAME AS category_c , 
            T.ID,T.NEW_PRICE,T.SITE_ID,T.DATE_SOURCE,T.INVESTIGATORS,T.IS_DEL,T.INSERT_USER,T.INSERT_DATE,
			T.UPDATE_DATE,T.UPDATE_USER,T.CHANGE_DATE,T.CATEGORY,T.GAP,T.COST_PRICE,T.PROFITS,
			T.ISHAVEACTIVE,T.PRICE,T.ACTIVE_NAME,T.GAP_GUAPAI,T.ACTIVITY_FORM,T.ACTIVITY_GAP,T.ALLGAP
         FROM T_SITE t1 
			LEFT JOIN (
			   SELECT *
			   FROM T_PRICECHANGE 
			   WHERE (site_id,CHANGE_DATE) in
			   (SELECT site_id,MAX(CHANGE_DATE) FROM T_PRICECHANGE GROUP BY site_id) 
			
			) t on t1."ID"=T.SITE_ID
			 LEFT JOIN T_OILTYPE t2 on t.category =T2.ID	
			where T.id is not null and t.is_del = 0 and T1.IS_DEL=0 

2.后来测试完毕正式上线,由于清空了数据库,在没有数据的额情况下报了错误,需要修改

 SELECT t1.SITE_NAME as sitename,t2.TYPE_NAME AS category_c , 
            T.ID,T.NEW_PRICE,T.SITE_ID,T.DATE_SOURCE,T.INVESTIGATORS,T.IS_DEL,T.INSERT_USER,T.INSERT_DATE,
			T.UPDATE_DATE,T.UPDATE_USER,T.CHANGE_DATE,T.CATEGORY,T.GAP,T.COST_PRICE,T.PROFITS,
			T.ISHAVEACTIVE,T.PRICE,T.ACTIVE_NAME,T.GAP_GUAPAI,T.ACTIVITY_FORM,T.ACTIVITY_GAP,T.ALLGAP
         FROM T_SITE t1 
			LEFT JOIN (
			   SELECT *
			   FROM T_PRICECHANGE 
			   WHERE (site_id||','||CHANGE_DATE) in
			   (SELECT site_id||','||MAX(CHANGE_DATE) FROM T_PRICECHANGE GROUP BY site_id) 
			
			) t on t1."ID"=T.SITE_ID
			 LEFT JOIN T_OILTYPE t2 on t.category =T2.ID	
			where T.id is not null and t.is_del = 0 and T1.IS_DEL=0 




  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值