2016-04-18 7 views
0

PFB die Abfrage, in der ich weiß, die tatsächliche Tabelle will, wo ich diesen (pin_ein, engineer_pin, TRANSACTION_DATE, EFFECTIVE_WEEK) ....wie die Quelltabelle aus einer komplexen SQL-Abfrage wissen

select count(1),pin_ein,engineer_pin,transaction_date,EFFECTIVE_WEEK from 
     (SELECT vw1.pin_ein, vw1.engineer_pin, 
           vw1.transaction_date, vw1.effective_week, 
           vw1.stores_tools_cost, 
           (vw1.stores_total_cost - vw1.stores_tools_cost 
           ) stores_total_cost_excl_tools, 
           vw1.item_count, vw1.stores_visit_count, 
           CASE 
            WHEN vw1.stores_total_cost < 
             5 
            THEN vw1.stores_visit_count 
           END stores_low_cost_visit_count, 
           vw1.actual_ouc ouc, er.eng_name engineer_name, 
           CASE 
            WHEN c.home_parked IS NOT NULL 
            THEN c.home_parked 
            ELSE 'N' 
           END home_parker, 
           CASE 
            WHEN c.home_parked IS NOT NULL 
            THEN c.commute_time 
            ELSE -99 
           END commute_time, 
           vw1.stores_com_cost ---v9.3--- 
          FROM (SELECT pin_ein, engineer_pin, actual_ouc, 
             transaction_date, effective_week, 
             NVL 
              (SUM 
               (CASE 
                WHEN ( cow LIKE '%TOOL%' 
                  OR cow LIKE 
                    '%TOOLE%' 
                 ) 
                 THEN transaction_value 
               END 
               ), 
              0 
              ) stores_tools_cost, 
             SUM 
              (transaction_value 
              ) stores_total_cost, 
             SUM (transaction_quantity) 
                    item_count, 
             COUNT 
              (DISTINCT sta_code 
              ) stores_visit_count, 
             NVL 
              (SUM 
               (CASE 
                WHEN cow in (SELECT cow FROM orbit_odw.stores_cow_ref) 
                 THEN transaction_value 
               END 
               ), 
              0 
              ) stores_com_cost  ---v9.3--- 
            FROM orbit_odw.stores_transaction_dtls 
            WHERE effective_week BETWEEN 201543 
                  AND 201610 
            /***Ver 6.0---last 13 weeks data to be considered***/ 
            AND transaction_date 
              BETWEEN to_date('19-10-2015','dd-mm-yyyy') 
               AND to_date('06-03-2016','dd-mm-yyyy') 
           /***Ver 6.0---last 13 weeks data to be considered***/ 
           GROUP BY pin_ein, 
             engineer_pin, 
             actual_ouc, 
             transaction_date, 
             effective_week) vw1, 
           (SELECT * 
            FROM orbit_odw.dim_wms_rmdm 
           WHERE current_status = 1) er, 
           (SELECT engineer_ein, commute_time, 
             home_parked 
            FROM orbit_odw.eng_parking_at_home_dtls 
           WHERE rec_end_date > SYSDATE 
            AND home_parked = 'Y') c 
         WHERE TO_CHAR (vw1.pin_ein) = er.ein 
          AND vw1.pin_ein = c.engineer_ein(+)) group by pin_ein,engineer_pin,transaction_date,EFFECTIVE_WEEK having count(1)>1; 
finden Hilfe

Bitte .. dank im Voraus

+0

Sie können nicht, es sei denn, Sie suchen in jeder Tabelle Definition – Mihai

+0

Oracle oder MySQL? Kennzeichne keine Produkte, die nicht beteiligt sind ... – jarlh

+0

Das Geheimnis, das herauszufinden, ist herauszufinden, wie die Unterabfrage mit dem Alias ​​'vw1' funktioniert. Es sieht so aus, als wäre das eine Zusammenfassung Ihrer 'stores_transaction_dlts' Tabelle. Ihre Abfrage hat definitiv genug Alias-Annotation, um dies definitiv herauszufinden. –

Antwort

1

Grundsätzlich, wenn ich mich richtig, Ihr Problem zu verstehen. Sie müssen verstehen, woher Ihr äußerer SELECT Daten holt. Es gibt also einen einfachen Regelsatz, um diese Daten zu erhalten. Die Schritte sind wie folgt.

  • Überprüfen Sie die Spaltenausgangs heißt in Ihrem Fall ist es pin_ein, engineer_pin, TRANSACTION_DATE, EFFECTIVE_WEEK
  • die Inline-Ansicht oder Tabelle prüfen, aus denen Ihre äußere Abfrage ist die Daten abgerufen werden. In Ihrem Fall ist es die einzige Inline-Ansicht, die Sie verwendet haben -> So Bit einfach zu identifizieren: P
  • Jetzt zu identifizieren, wie Ihre Inline-Ansicht VW1 Daten füllt. In Ihrer Falltabelle wird orbit_odw.stores_transaction_dtls verwendet, um die erforderlichen Felder zu füllen.

Hoffe, dass so viele Informationen benötigt werden. Auch für einfache Abfragen können Sie immer zu ALL_TAB_COLUMNS-Systemtabellen gehen, um die Spalte einer Tabelle einfach zu identifizieren.

+0

danke avrajit :) – gyana

+0

Sie sind herzlich willkommen. Bitte akzeptieren Sie die Antwort, wenn es Ihnen geholfen hat –

Verwandte Themen