根据不同的值查询不同的表,再根据不同的值赋予不同的where筛选条件

需求:

关联查询时,需要根据以上三个条件去查询:
1、预警来源,确定是从舆情上报表(F_YQSB)还是事件快报表(F_SJKB)中查;

2、预警对象,如果是舆情上报表(F_YQSB),则取TENDENCY='负面' and HEAT_VALUE>10;然后再根据预警对象(NAME_)对应的CLASSIFY字段,如果为1,那么再and PROVINCE_NAME='全区',如果是2 就and CONTENT_REFER=预警对象,如果是3 就and QU_XIAN=预警对象,如果是4 则 and PUBLIC_ONE=预警对象 ,如果是4 则 and PUBLIC_TWO=预警对象 ;
如果是事件快报表则 1=1 先取所有 ,再根据 CLASSIFY字段,1就1=1 取所有,2,3,4,5分别对应EVENT_LOCATION,QU_XIAN,PUBLIC_ONE,PUBLIC_TWO;
3、预警时间,查询舆情上报表(F_YQSB)或事件快报表(F_SJKB)的时间字段;

4、列表的内容为:事件标题(F_SJKB.EVENT_TITLE/F_YQSB.TITLE_)、属地单位(F_SJKB.EVENT_LOCATION/F_YQSB.    CONTENT_REFER)、事件分类(F_SJKB.PUBLIC_ONE/F_YQSB.PUBLIC_ONE)、事件类别(F_SJKB.PUBLIC_TWO/F_YQSB.PUBLIC_TWO)、事件内容(F_SJKB.EVENT_DETAILS/F_YQSB.EVENT_OVERVIEW)、事件级别(F_SJKB.EMERGENCY_DEGREE/F_YQSB.HEAT_VALUE)、事件时间(F_SJKB.EVENT_TIME/F_YQSB.PUBLISH_TIME);

SELECT *  
FROM (  
    SELECT *  
    FROM (select TITLE_ title,CONTENT_REFER location,PUBLIC_ONE one,PUBLIC_TWO two,EVENT_OVERVIEW detail,concat(HEAT_VALUE,'') degree,PUBLISH_TIME time from F_YQSB WHERE TENDENCY='负面' and HEAT_VALUE>10 and PUBLISH_TIME ='<#=@SJ#>' AND
case 
	when '<#=@CLASS#>'='1' and PROVINCE_NAME='全区' then 1 
	when '<#=@CLASS#>'='2' and CONTENT_REFER='<#=@name#>' then 1 
	when '<#=@CLASS#>'='3' and QU_XIAN='<#=@name#>' then 1 
	when '<#=@CLASS#>'='4' and PUBLIC_ONE='<#=@name#>' then 1 
	when '<#=@CLASS#>'='5' and PUBLIC_two='<#=@name#>' then 1
        else 0 
end  =1
)t1 
    WHERE '<#=@source#>'='舆情事件' 
    UNION ALL  
    SELECT *  
    FROM (select EVENT_TITLE title,EVENT_LOCATION location,PUBLIC_ONE one ,PUBLIC_TWO two,EVENT_DETAILS detail,EMERGENCY_DEGREE degree,EVENT_TIME time from F_SJKB
where EVENT_TIME ='<#=@SJ#>' AND
case 
	when '<#=@CLASS#>'='1'  then 1 
	when '<#=@CLASS#>'='2' and EVENT_LOCATION='<#=@name#>' then 1 
	when '<#=@CLASS#>'='3' and QU_XIAN='<#=@name#>' then 1 
	when '<#=@CLASS#>'='4' and PUBLIC_ONE='<#=@name#>' then 1 
	when '<#=@CLASS#>'='5' and PUBLIC_two='<#=@name#>' then 1
        else 0 
end  =1
)t2  
    WHERE '<#=@source#>'='上报事件' 
) AS result_table;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值