UPDATE DSJYDD.T_CSKQZLFX_DQST_YLTS B SET B.YLTS = (
SELECT C.YLTS FROM (
SELECT COUNT(*) YLTS,A.CITYCODE FROM TENV.AIR_CITYDAYAQI_PUBLISH A WHERE A.QUALITY IN ('优','良')
AND TO_CHAR(A.TIMEPOINT,'YYYY-MM') >= (
SELECT CONCAT(YEAR(SYSDATE),'-01') FROM DUAL
)
AND TO_CHAR(A.TIMEPOINT,'YYYY-MM') <= TO_CHAR(SYSDATE,'YYYY-MM')
AND
A.CITYCODE IN ('110000','120000','130100','130200','131000','130600',
'130900','131100','130500','130400','140100'
,'140300','140400','140500','370100','370300','370800','371400','371500','371600','371700','410100','410200'
,'410500','410600','410700','410800','410900')
GROUP BY A.CITYCODE) C WHERE C.CITYCODE = B.CITYCODE),
B.YLTSTB = (SELECT CASE WHEN YLTS_QN = 0 THEN NULL ELSE ROUND((YLTS_JN-YLTS_QN)/YLTS_QN,2) * 100 END YLTSTB FROM (
SELECT COUNT(*) YLTS_JN,E.CITYCODE,
( SELECT YLTS_QN FROM (
SELECT COUNT(*) YLTS_QN,P.CITYCODE FROM TENV.AIR_CITYDAYAQI_PUBLISH P
WHERE P.QUALITY IN ('优','良')
AND TO_CHAR(P.TIMEPOINT,'YYYY-MM') >= TO_CHAR(TO_DATE(CONCAT(YEAR(SYSDATE),'-01'),'YYYY-MM') - 1 YEAR,'YYYY-MM')
AND TO_CHAR(P.TIMEPOINT,'YYYY-MM-DD') <= TO_CHAR((SYSDATE-1 DAY) -1 YEAR,'YYYY-MM-DD')
AND P.CITYCODE IN ('110000','120000','130100','130200','131000','130600',
'130900','131100','130500','130400','140100'
,'140300','140400','140500','370100','370300','370800','371400','371500','371600','371700','410100','410200'
,'410500','410600','410700','410800','410900')
GROUP BY P.CITYCODE
) D WHERE D.CITYCODE = E.CITYCODE) YLTS_QN
FROM TENV.AIR_CITYDAYAQI_PUBLISH E WHERE E.QUALITY IN ('优','良')
AND TO_CHAR(E.TIMEPOINT,'YYYY-MM') >= (
SELECT CONCAT(YEAR(SYSDATE),'-01') FROM DUAL)
AND TO_CHAR(E.TIMEPOINT,'YYYY-MM') <= TO_CHAR(SYSDATE,'YYYY-MM')
AND E.CITYCODE IN ('110000','120000','130100','130200','131000','130600',
'130900','131100','130500','130400','140100'
,'140300','140400','140500','370100','370300','370800','371400','371500','371600','371700','410100','410200'
,'410500','410600','410700','410800','410900')
GROUP BY E.CITYCODE
) F WHERE F.CITYCODE = B.CITYCODE)
WHERE EXISTS (SELECT 1 FROM TENV.AIR_CITYDAYAQI_PUBLISH A WHERE A.QUALITY IN ('优','良')
AND TO_CHAR(A.TIMEPOINT,'YYYY-MM') >= (
SELECT CONCAT(YEAR(SYSDATE),'-01') FROM DUAL
)
AND TO_CHAR(A.TIMEPOINT,'YYYY-MM') <= TO_CHAR(SYSDATE,'YYYY-MM')
AND A.CITYCODE IN ('110000','120000','130100','130200','131000','130600',
'130900','131100','130500','130400','140100'
,'140300','140400','140500','370100','370300','370800','371400','371500','371600','371700','410100','410200'
,'410500','410600','410700','410800','410900')
)
UPDATE DSJYDD.T_CSKQZLFX_DQST_YLTS B SET B.YLTS = (
SELECT C.YLTS FROM (
SELECT COUNT(*) YLTS,A.CITYCODE FROM TENV.AIR_CITYDAYAQI_PUBLISH A WHERE A.QUALITY IN ('优','良')
AND TO_CHAR(A.TIMEPOINT,'YYYY-MM') >= (
SELECT CONCAT(YEAR(SYSDATE),'-01') FROM DUAL
)
AND TO_CHAR(A.TIMEPOINT,'YYYY-MM') <= TO_CHAR(SYSDATE,'YYYY-MM')
GROUP BY A.CITYCODE) C WHERE C.CITYCODE = B.CITYCODE),
B.YLTSTB = (SELECT CASE WHEN YLTS_QN = 0 THEN NULL ELSE ROUND((YLTS_JN-YLTS_QN)/YLTS_QN,2) * 100 END YLTSTB FROM (
SELECT COUNT(*) YLTS_JN,E.CITYCODE,
( SELECT YLTS_QN FROM (
SELECT COUNT(*) YLTS_QN,P.CITYCODE FROM TENV.AIR_CITYDAYAQI_PUBLISH P
WHERE P.QUALITY IN ('优','良')
AND TO_CHAR(P.TIMEPOINT,'YYYY-MM') >= TO_CHAR(TO_DATE(CONCAT(YEAR(SYSDATE),'-01'),'YYYY-MM') - 1 YEAR,'YYYY-MM')
AND TO_CHAR(P.TIMEPOINT,'YYYY-MM-DD') <= TO_CHAR((SYSDATE-1 DAY) -1 YEAR,'YYYY-MM-DD')
GROUP BY P.CITYCODE
) D WHERE D.CITYCODE = E.CITYCODE) YLTS_QN
FROM TENV.AIR_CITYDAYAQI_PUBLISH E WHERE E.QUALITY IN ('优','良')
AND TO_CHAR(E.TIMEPOINT,'YYYY-MM') >= (
SELECT CONCAT(YEAR(SYSDATE),'-01') FROM DUAL)
AND TO_CHAR(E.TIMEPOINT,'YYYY-MM') <= TO_CHAR(SYSDATE,'YYYY-MM')
GROUP BY E.CITYCODE
) F WHERE F.CITYCODE = B.CITYCODE)
WHERE EXISTS (SELECT 1 FROM TENV.AIR_CITYDAYAQI_PUBLISH A WHERE A.QUALITY IN ('优','良')
AND TO_CHAR(A.TIMEPOINT,'YYYY-MM') >= (
SELECT CONCAT(YEAR(SYSDATE),'-01') FROM DUAL
)
AND TO_CHAR(A.TIMEPOINT,'YYYY-MM') <= TO_CHAR(SYSDATE,'YYYY-MM')
)
注意的是要是让Kettle只是执行一次SQL文件的话,那么只需要建立上面一个执行SQL脚本的组件就行了,然后建立定时任务,Kettle就能定时的执行了!!!