2017-07-18 1 views
0

ich drei verschiedene Cursor nur drei zu handhaben unterschiedlichen Zustand geschaffen habe, wo: 1) Um aktuelles Datum Daten 2) Um kumulative Daten 3) Um Nettodaten Drei Cursor mit gleicher zu erhalten Anzahl der Parameter, wie können wir drei Cursor zu einem kombinieren? Ich könnte verschiedene cp_tran_type übergeben, um anzugeben, welche Art von Daten ich brauche.Dynamische Cursor verschiedene Bedingungen zu behandeln

Beispiel unten:

CURSOR c_credit(cp_object_id VARCHAR2, cp_date DATE, cp_tran_type VARCHAR2) IS 
SELECT nvl(SUM(qty), 0) qty 
FROM x 
WHERE object_id = cp_object_id 
AND **daytime = cp_date** 
AND text_1 = cp_tran_type; 

CURSOR c_cum_credit(cp_lifting_account_id VARCHAR2, cp_date DATE, cp_tran_type VARCHAR2) IS 
SELECT nvl(SUM(adj_qty2), 0) adj_qty 
FROM x 
WHERE object_id = cp_object_id 
AND **daytime <= cp_date** 
AND text_1 = cp_tran_type; 

CURSOR c_net_credit(cp_lifting_account_id VARCHAR2, cp_date DATE, cp_tran_type VARCHAR2) IS 
SELECT nvl(SUM(adj_qty2), 0) adj_qty 
FROM x 
WHERE object_id = cp_object_id 
AND daytime <= cp_date 
AND **(text_1 = 'A' OR text_1 = 'B');** 

Thank you!

Antwort

0
SELECT NVL (
      SUM (
       CASE 
        WHEN daytime = cp_date 
        AND text_1 = cp_tran_type 
        THEN 
         qty 
        ELSE 
         0 
       END 
      ) 
     , 0 
     ) 
      qty 
    , NVL (
      SUM (
       CASE 
        WHEN daytime <= cp_date 
        AND text_1 = cp_tran_type 
        THEN 
         adj_qty2 
        ELSE 
         0 
       END 
      ) 
     , 0 
     ) 
      adj_qty 
    , NVL (
      SUM (
       CASE 
        WHEN daytime <= cp_date 
        AND (text_1 = 'A' 
         OR text_1 = 'B') 
        THEN 
         adj_qty2 
        ELSE 
         0 
       END 
      ) 
     , 0 
     ) 
      adj_qty 
    FROM x 
WHERE object_id = cp_object_id; 
Verwandte Themen