我收到了以下错误,该错误基于我在Netezza中的代码(附后)。
^ found "WHERE" (at char 543) expecting an identifier found a keyword
但是我如何找到它所在代码的位置?我需要将543除以每行的字符数吗?
代码如下所示:
DELETE FROM TDM_FEE_DISCOUNT_FACT;;
----------------------------------------------------------------------------
-- INSERT INTO TDM TABLE ---
----------------------------------------------------------------------------
INSERT INTO FEE_DISCOUNT_FACT
(
FEE_DISCNT_F_DK ,
HLTH_PLN_GRP_DK,
HLTH_PLN_SPSR_DK,
PLN_MBR_DK,
COV_PRD_STRT_DT,
COV_PRD_END_DT,
BIL_DUE_DT,
FEE_AMT,
DISCNT_AMT,
BIL_ID,
SS_CD,
TNT_CD,
INSRT_DT,
UPDT_DT,
CREAT_RUN_CYC_EXEC_SK,
LST_UPDT_RUN_CYC_EXEC_SK,
REC_PRCS_TYP_CD,
ROW_EFF_STRT_DT,
ROW_EFF_END_DT,
CUR_ROW_IND
)
WITH LAST_RUN_DATE(DT) AS
(
SELECT NVL(LAST_RUN, TO_DATE('01/01/1900', 'MM/DD/YYYY'))
FROM (
SELECT MAX(NVL(TCT.MANIFEST_COMPLETED_TS, TO_DATE('01/01/1900', 'MM/DD/YYYY'))) LAST_RUN
FROM :DB_XREF..TGT_CONTROL_TBL TCT
WHERE MANIFEST = 'F_FEE_DISCOUNT'
) T
)
,
--Need to modify the following section , on line 66 of FEE_DISCOUNT_FACT
DRIVER AS
(
select
PM.HLTH_PLN_GRP_NBR||'|'||SBFD.SS_CD AS HLTH_PLN_GRP_BK
,PM.HLTH_PLN_GRP_NBR AS SPSR_ID
,PM.PLN_MBR_SK
--COV_PRD_STRT_DT
--COV_PRD_END_DT
,SBFD.BIL_DUE_DT AS BIL_DUE_DT
,NVL(SBFD.FEE_AMT,0) AS FEE_AMT
,NVL(SBFD.DISCNT_AMT,0) AS DISCNT_AMT
,SBFD.BIL_ID
,SBFD.SS_CD
,SBFD.FEE_DISCNT_CREAT_DT_TM
from MBRBOR_TGT_D4..SUBSCRIBER_BILLING_FEE_DISCOUNT SBFD
LEFT OUTER JOIN MBRBOR_TGT_D4..PLAN_MEMBER PM
ON PM.SBSCR_SK = SBFD.SBSCR_SK
AND PM.CUR_ROW_IND = 'Y'
AND PM.REC_PRCS_TYP_CD <> 'D'
AND PM.SBSCR_DPND_RLNSP_TYP_CD_SK IN (SELECT CD_MAP_SK FROM REFBOR_TGT_D4..CODEMAP
WHERE CONFOR_CD = 'SUB')
)
/* IN the code, only need to join to the dimensions .. FACT DK's are the sequence */
SELECT NEXT VALUE FOR FEE_DISCOUNT_F_SEQ AS FEE_DISCNT_F_DK,
NVL(HPGD.HLTH_PLN_GRP_DK,-9) AS HLTH_PLN_GRP_DK,
NVL(HPGD.HLTH_PLN_SPSR_DK,-9) AS HLTH_PLN_SPSR_DK,
PM.PLN_MBR_SK AS PLN_MBR_DK,
NVL(??.COV_PRD_STRT_DT,-9) AS COV_PRD_STRT_DT,
NVL(??.COV_PRD_END_DT,-9) AS COV_PRD_END_DT,
NVL(BIL_DUE_DT,0) AS BIL_DUE_DT,
NVL(FEE_AMT, 0) AS FEE_AMT,
NVL(DISCNT_AMT, 0) AS DISCNT_AMT,
NVL(BIL_ID,-9) AS BIL_ID,
DR.SS_CD AS SS_CD,
'BSC' AS TNT_CD,
NOW() AS INSRT_DT,
NOW() AS UPDT_DT,
NVL(SBFD.CREAT_RUN_CYC_EXEC_SK,-9) AS CREAT_RUN_CYC_EXEC_SK,
NVL(SBFD.LST_UPDT_RUN_CYC_EXEC_SK,-9) AS LST_UPDT_RUN_CYC_EXEC_SK,
NVL(SBFD.REC_PRCS_TYP_CD,0) AS REC_PRCS_TYP_CD,
NVL(SBFD.ROW_EFF_STRT_DT,0) AS ROW_EFF_STRT_DT,
NVL(SBFD.ROW_EFF_END_DT,0) AS ROW_EFF_END_DT,
NVL(SBFD.CUR_ROW_IND,0) AS CUR_ROW_IND --FEE_DISCNT_CREAT_DT_TM
FROM DRIVER DR
LEFT OUTER JOIN :DB_TGT..HEALTH_PLAN_GROUP_DIMENSION HPGD ON DR.HLTH_PLN_GRP_BK = HPGD.HLTH_PLN_GRP_BK
AND FEE_DISCNT_CREAT_DT_TM BETWEEN HPGD.ROW_EFF_STRT_DT AND HPGD.ROW_EFF_END_DT
LEFT OUTER JOIN :DB_TGT..HEALTH_PLAN_SPONSOR_DIMENSION HPSD ON DR.SPSR_ID = HPSD.SPSR_ID
AND FEE_DISCNT_CREAT_DT_TM BETWEEN HPSD.ROW_EFF_STRT_DT AND HPSD.ROW_EFF_END_DT --DONE
--some of the joins will have different conditions . like for SS_CD it will be different
LEFT OUTER JOIN :DB_TGT..PLAN_MEMBER_DIMENSION PMD ON DR.PLN_MBR_SK = PMD.PLN_MBR_SK
AND FEE_DISCNT_CREAT_DT_TM BETWEEN PMD.ROW_EFF_STRT_DT AND PMD.ROW_EFF_END_DT
--LEFT OUTER JOIN
LEFT OUTER JOIN
(SELECT SBSCR.PLN_MBR_DK AS SBSCR_DK, PM.*
FROM :DB_TGT..PLAN_MEMBER_DIMENSION PM
LEFT OUTER JOIN
(SELECT PM.PLN_MBR_DK, PM.PLN_MBR_SK, PM.SBSCR_SK, PM.CUR_ROW_IND, PM.ROW_EFF_STRT_DT, PM.ROW_EFF_END_DT FROM
:DB_TGT..PLAN_MEMBER_DIMENSION PM WHERE PLN_MBR_SK = SBSCR_SK) SBSCR
ON PM.SBSCR_SK = SBSCR.SBSCR_SK AND (PM.ROW_EFF_END_DT -1) BETWEEN
SBSCR.ROW_EFF_STRT_DT AND SBSCR.ROW_EFF_END_DT) PMD
ON DR.PLN_MBR_SK = PMD.PLN_MBR_SK
AND DR.CAPITN_ERN_FROM_DT BETWEEN PMD.ROW_EFF_STRT_DT AND PMD.ROW_EFF_END_DT
由于
答案 0 :(得分:2)
由于vi是用于查询的编辑器(如果你在nzsql中) - 你可以通过在编辑器中输入0543l
从头开始导航543个字符 - 这将带你开始,然后543迈向“正确”的步骤。这应该会带你到问题所在的sql区域。