2013-08-22 225 views
1
SELECT PB.BUKTI_ID, 
      PB.BUKTI_DATE, 
      CBD.DISBURSE_DATE, 
      PB.CB_ID, 
      PB.BUKTI_RECEIVED_BY, 
      PB.NPWP, 
      (SELECT SUM (TOTAL_AMOUNT) 
       FROM  TRX_PPH23_BUKTI PB 
        LEFT JOIN 
         TRX_PPH23_BUKTI_DETAIL PBD 
        ON PB.BUKTI_ID = PBD.REF_BUKTI_ID) 
       AS TOTAL_AMOUNT, 
      PB.BRANCH_ID, 
      DECODE (PB.BUKTI_STATUS, 'O', 'Open', 'B', 'Cancel', 'Close') 
       BUKTI_STATUS 
    FROM  TRX_PPH23_BUKTI PB 
      LEFT JOIN 
       ((SELECT DISBURSE_NO, 
          DISBURSE_DATE, 
          RECEIVED_BY, 
          TOTAL_AMOUNT, 
          DISBURSE_STATUS 
        FROM TRX_CASH_DISBURSE_HEADER) 
       UNION 
       (SELECT DISBURSE_NO, 
         DISBURSE_DATE, 
         RECEIVED_BY, 
         TOTAL_AMOUNT, 
         DISBURSE_STATUS 
        FROM TRX_BANK_DISBURSE_HEADER)) CBD 
      ON PB.CB_ID = CBD.DISBURSE_NO 
ORDER BY PB.BUKTI_ID DESC; 

我要選擇現場總和(TOTAL_AMOUNT)從其他表(TRX_PPH23_BUKTI_DETAIL)加盟,但我對這個列有相同的價值觀加盟,選擇列與其他表

enter image description here

我知道問題因爲我沒有特別說明的關鍵(bukti_id)..但我不知道 如何循環此查詢沒有存儲過程+參數

回答

1

您必須關聯內部查詢與外部表而不是聲明它的ag艾因

... 
    PB.BUKTI_RECEIVED_BY, 
    PB.NPWP, 
    (SELECT SUM (TOTAL_AMOUNT) 
    FROM TRX_PPH23_BUKTI_DETAIL PBD 
    WHERE PBD.REF_BUKTI_ID = PB.BUKTI_ID) 
     AS TOTAL_AMOUNT, 
    PB.BRANCH_ID, 
    ... 
1

這可能會實現,但應包括聯接,

SELECT PB.BUKTI_ID, 
       PB.BUKTI_DATE, 
       CBD.DISBURSE_DATE, 
       PB.CB_ID, 
       PB.BUKTI_RECEIVED_BY, 
       PB.NPWP, 
       (SELECT SUM (TOTAL_AMOUNT) 
        FROM  TRX_PPH23_BUKTI PB2 
         LEFT JOIN 
          TRX_PPH23_BUKTI_DETAIL PBD 
         ON PB2.BUKTI_ID = PBD.REF_BUKTI_ID and PB.BUKTI_ID = PB2.BUKTI_ID) 
        AS TOTAL_AMOUNT, 
       PB.BRANCH_ID, 
       DECODE (PB.BUKTI_STATUS, 'O', 'Open', 'B', 'Cancel', 'Close') 
        BUKTI_STATUS 
     FROM  TRX_PPH23_BUKTI PB 
       LEFT JOIN 
        ((SELECT DISBURSE_NO, 
           DISBURSE_DATE, 
           RECEIVED_BY, 
           TOTAL_AMOUNT, 
           DISBURSE_STATUS 
         FROM TRX_CASH_DISBURSE_HEADER) 
        UNION 
        (SELECT DISBURSE_NO, 
          DISBURSE_DATE, 
          RECEIVED_BY, 
          TOTAL_AMOUNT, 
          DISBURSE_STATUS 
         FROM TRX_BANK_DISBURSE_HEADER)) CBD 
       ON PB.CB_ID = CBD.DISBURSE_NO 
join ((SELECT SUM (TOTAL_AMOUNT) 
        FROM  TRX_PPH23_BUKTI PB2 
         LEFT JOIN 
          TRX_PPH23_BUKTI_DETAIL PBD 
         ON PB2.BUKTI_ID = PBD.REF_BUKTI_ID group by PB2.BUKTI_ID )) as X_2 on X_2.BUKTI_ID = PB.BUKTI_ID 
where 
    ORDER BY PB.BUKTI_ID DESC; 

感謝

+0

它沒有工作,PB.BUKTI_ID在該範圍內無效.. – Niinii

+0

如果您是正確的,請您接受答案嗎? – Felquir

0

與和查詢是這項工作的嗎?

SELECT * FROM (
    SELECT PB.BUKTI_ID, 
      PB.BUKTI_DATE, 
      CBD.DISBURSE_DATE, 
      PB.CB_ID, 
      PB.BUKTI_RECEIVED_BY, 
      PB.NPWP, 
      (SELECT SUM (TOTAL_AMOUNT) 
       FROM  TRX_PPH23_BUKTI PB 
        LEFT JOIN 
         TRX_PPH23_BUKTI_DETAIL PBD 
        ON PB.BUKTI_ID = PBD.REF_BUKTI_ID) 
       AS TOTAL_AMOUNT, 
      PB.BRANCH_ID, 
      DECODE (PB.BUKTI_STATUS, 'O', 'Open', 'B', 'Cancel', 'Close') 
       BUKTI_STATUS 
    FROM  TRX_PPH23_BUKTI PB 
      LEFT JOIN 
       ((SELECT DISBURSE_NO, 
          DISBURSE_DATE, 
          RECEIVED_BY, 
          TOTAL_AMOUNT, 
          DISBURSE_STATUS 
        FROM TRX_CASH_DISBURSE_HEADER) 
       UNION 
       (SELECT DISBURSE_NO, 
         DISBURSE_DATE, 
         RECEIVED_BY, 
         TOTAL_AMOUNT, 
         DISBURSE_STATUS 
        FROM TRX_BANK_DISBURSE_HEADER)) CBD 
      ON PB.CB_ID = CBD.DISBURSE_NO 
) TRX INNER JOIN TRX_PPH23_BUKTI_DETAIL TRXb ON Trx.BUKTI_ID =TRXb.BUKTI_ID