WITH TAB_B AS ( select DISTINCT A.calling_imsi as IMSI, coalesce(B.ANTIGUA,C.ANTIGUA) GJ, coalesce(B.APUA,C.APUA) YYS from ( SELECT A.calling_imsi, substr(a.calling_imsi,1,6) calling_imsi_6, substr(a.calling_imsi,1,5) calling_imsi_5, substr(a.calling_imsi,1,4) calling_imsi_4 FROM spark_odc_dwd.D_ENS_GBSSAP_CC a WHERE p_hour='#{time yyyyMMddHH}' ) a left join ( select SUBSTR(regexp_replace(IMSI,'[^0-9]+',''),1,6) IMSI_6, SUBSTR(regexp_replace(IMSI,'[^0-9]+',''),1,5) IMSI_5, ANTIGUA, APUA from spark_odc_data.A_DM_CO_BA_VR_OPT_IMSI )b on a.calling_imsi_6=b.IMSI_6 left join ( select SUBSTR(regexp_replace(IMSI,'[^0-9]+',''),1,6) IMSI_6, SUBSTR(regexp_replace(IMSI,'[^0-9]+',''),1,5) IMSI_5, ANTIGUA, APUA from spark_odc_data.A_DM_CO_BA_VR_OPT_IMSI )c on a.calling_imsi_5=c.IMSI_5)
时间: 2024-04-26 18:25:03 浏览: 153
strcmp-07-as和distinct关键字.ev4.rar
这是一个SQL语句,它的作用是从表spark_odc_dwd.D_ENS_GBSSAP_CC中筛选出符合条件p_hour='#{time yyyyMMddHH}'的数据,并与表spark_odc_data.A_DM_CO_BA_VR_OPT_IMSI进行左连接,最终得到一个名为TAB_B的表,它包含IMSI、GJ和YYS三个字段。其中,IMSI字段来自表spark_odc_dwd.D_ENS_GBSSAP_CC中的calling_imsi字段,GJ和YYS字段则是通过左连接得到的。其中coalesce函数用于处理null值,如果B.ANTIGUA或C.ANTIGUA为空,则选择另一个不为空的值作为GJ字段的值;同理,如果B.APUA或C.APUA为空,则选择另一个不为空的值作为YYS字段的值。
阅读全文