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 14:25:03 浏览: 161
这是一个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字段的值。
相关问题
mismatched input 'WITH' expecting {'(', 'SELECT', 'FROM', 'VALUES', 'TABLE', 'INSERT', 'MAP', 'REDUCE'}(line 1, pos 1191) == SQL == WITH TAB_A AS ( select DISTINCT A.IMSI, coalesce(B.COUNTRY,C.COUNTRY) GJ, coalesce(B.OPERATOR,C.OPERATOR) YYS from ( SELECT A.START_TIME, A.END_TIME, A.MSISDN, A.IMSI, A.CALLING_GT, A.OPERATE_CODE, A.RESULT, A.ERROR_CODE, substr(a.CALLING_GT,1,6) CALLING_GT_6, substr(a.CALLING_GT,1,5) CALLING_GT_5, substr(a.CALLING_GT,1,4) CALLING_GT_4 FROM spark_odc_dwd.D_ENS_GMAP_MM a WHERE p_hour='2023060600' ) a left join ( SELECT DISTINCT regexp_replace(E164_IR21,'[^0-9]+','') E164_IR21, SUBSTR(regexp_replace(E164_IR21,'[^0-9]+',''),1,6) E164_IR21_6, SUBSTR(regexp_replace(E164_IR21,'[^0-9]+',''),1,5) E164_IR21_5, SUBSTR(regexp_replace(E164_IR21,'[^0-9]+',''),1,4) E164_IR21_4, COUNTRY, VENDOR_NAME AS OPERATOR FROM spark_odc_data.A_DM_CO_BA_VR_OPT_GT A) b on A.CALLING_GT_5=b.E164_IR21_5 left join ( SELECT DISTINCT regexp_replace(E164_IR21,'[^0-9]+','') E164_IR21, SUBSTR(regexp_replace(E164_IR21,'[^0-9]+',''),1,6) E164_IR21_6, SUBSTR(regexp_replace(E164_IR21,'[^0-9]+',''),1,5) E164_IR21_5, SUBSTR(regexp_replace(E164_IR21,'[^0-9]+',''),1,4) E164_IR21_4, COUNTRY, VENDOR_NAME AS OPERATOR FROM spark_odc_data.A_DM_CO_BA_VR_OPT_GT A) c on A.CALLING_GT_4=c.E164_IR21_4)
这个报错与前一个类似,是因为WITH语句不被支持或者不被SQL版本所支持。你可以将WITH语句改写成子查询的形式,例如:
```
SELECT DISTINCT A.IMSI, coalesce(B.COUNTRY,C.COUNTRY) AS GJ, coalesce(B.OPERATOR,C.OPERATOR) AS YYS
FROM (
SELECT START_TIME, END_TIME, MSISDN, IMSI, CALLING_GT, OPERATE_CODE, RESULT, ERROR_CODE, substr(CALLING_GT,1,6) AS CALLING_GT_6, substr(CALLING_GT,1,5) AS CALLING_GT_5, substr(CALLING_GT,1,4) AS CALLING_GT_4
FROM spark_odc_dwd.D_ENS_GMAP_MM
WHERE p_hour='2023060600'
) A
LEFT JOIN (
SELECT DISTINCT regexp_replace(E164_IR21,'[^0-9]+','') AS E164_IR21, SUBSTR(regexp_replace(E164_IR21,'[^0-9]+',''),1,6) AS E164_IR21_6, SUBSTR(regexp_replace(E164_IR21,'[^0-9]+',''),1,5) AS E164_IR21_5, SUBSTR(regexp_replace(E164_IR21,'[^0-9]+',''),1,4) AS E164_IR21_4, COUNTRY, VENDOR_NAME AS OPERATOR
FROM spark_odc_data.A_DM_CO_BA_VR_OPT_GT
) B ON A.CALLING_GT_5=B.E164_IR21_5
LEFT JOIN (
SELECT DISTINCT regexp_replace(E164_IR21,'[^0-9]+','') AS E164_IR21, SUBSTR(regexp_replace(E164_IR21,'[^0-9]+',''),1,6) AS E164_IR21_6, SUBSTR(regexp_replace(E164_IR21,'[^0-9]+',''),1,5) AS E164_IR21_5, SUBSTR(regexp_replace(E164_IR21,'[^0-9]+',''),1,4) AS E164_IR21_4, COUNTRY, VENDOR_NAME AS OPERATOR
FROM spark_odc_data.A_DM_CO_BA_VR_OPT_GT
) C ON A.CALLING_GT_4=C.E164_IR21_4;
```
这样就可以避免使用WITH语句而得到正确的结果。
SELECT DISTINCT t.FAULT_CODE AS "dataIndex", t.FAULT_NAME AS "title" FROM FAULT_TYPE t WHERE t.PAR_FAULT_CODE = t.FAULT_CODE UNION ALL SELECT COALESCE('reportCount', 'N/A') AS "dataIndex", '合计' AS "title" FROM DUAL怎么根据FAULT_CODE排序
可以在UNION ALL语句后面添加一个ORDER BY子句来对查询结果进行排序,以下是一个示例:
```
SELECT DISTINCT t.FAULT_CODE AS "dataIndex", t.FAULT_NAME AS "title"
FROM FAULT_TYPE t
WHERE t.PAR_FAULT_CODE = t.FAULT_CODE
UNION ALL
SELECT COALESCE('reportCount', 'N/A') AS "dataIndex", '合计' AS "title"
FROM DUAL
ORDER BY "dataIndex" ASC;
```
其中,ORDER BY子句中的"dataIndex"是要排序的列名,ASC表示升序排序(也可以使用DESC表示降序排序)。注意,在Oracle数据库中,列名是区分大小写的,因此要使用引号将列名括起来。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)