2017-08-04 42 views
0

我收到以下錯誤,它是基於我的代碼(下面附在Netezza中)。在Putty中,您如何找出錯誤基於char位置的位置?

^found "WHERE" (at char 543) expecting an identifier found a keyword 

但是,我如何找到代碼位於?我需要用543除以每行字符的數量嗎?通過鍵入你可以從一開始就定位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 

感謝

+1

你可以請你出示你的代碼,以便我們可以分析嗎? –

+0

@FerdinandGaspar - 完成,thx – Coffee

回答

2

由於VI是用於查詢(如果你在nzsql是)編輯:

的代碼如下所示在0543l在編輯器 - 這將帶你開始,然後543步到「右」。這應該將您帶到問題所在的sql區域。