2017-11-21 3 views
-1

Ich habe versucht, die Daten aus mehreren Tabellen zu ziehen, aber aufgrund Milliarden von Daten habe ich Daten nach Jahr und Monat abgerufen. Abfrage läuft lange und wirft Platzfehler. Der temporäre Speicherplatz wurde auf die maximale Größe erhöht, der Fehler wird jedoch immer noch geworfen.wirft Fehler mit mehreren Joins und Abfrage läuft für lange Zeit

Abfrage wie folgt:

select DISTINCT 'NEW_TEST' as DIL 
     ,(nvl(to_char(erg.rdrgrp_id), 'MASTER')) as PIN_ID 
     ,ws.wrks_id as time_code 
     ,ws.emp_id as NEW1 
     ,(select emp_name 
      from employee 
     where emp_id = ws.emp_id) as employee_number 
     ,wd.tcode_id as pay_code_id 
     ,ws.wrks_tcode_sum as timesheet_entry_type 
     ,wd.tcode_id as time_code 
     ,wd.htype_name as hour_type 
     ,(select htype_desc 
      from hour_type 
     where htype_name = wd.htype_name) as hour_type_desc 
     ,null as hour_type_detail 
     ,(wd.wrkd_minutes/60) as timesheet_hours 
     ,wd.tcode_id as pay_code_id 
     ,ws.paygrp_id as pay_group_code 
     ,(select paygrp_name 
      from pay_group 
     where paygrp_id = ws.paygrp_id) as pay_group_name 
     ,ws.wrks_rules_applied as work_rule_desc 
     ,wd.wrkd_overridden as time_entry_source_adjusted 
     ,ws.shft_id as work_shift_id 
     ,(select shft_name 
      from shift 
     where shft_id = ws.shft_id) as work_shift 
     ,wd.job_id as job_code 
     ,(select job_desc 
      from job 
     where job_id = wd.job_id) as job_desc 
     ,wd.client_id as client 
     ,wd.wrkd_rate as rate 
     ,(select paygrptyp_name 
      from view_pay_group 
     where paygrp_id = ws.paygrp_id) as rate_uom 
     ,(wd.wrkd_rate * wd.wrkd_minutes)/60 as wage 
     ,(select sum(wd.wrkd_minutes/60 * wd.wrkd_rate) 
      from work_detail wd 
     where wd.wrks_id = ws.wrks_id) as amount 
     ,wd.proj_id as project_number 
     ,wd.proj_name as project_name 
    from work_summary   ws 
     ,employee_reader_group erg 
     ,view_work_detail  wd 
     ,employee_schedule  es 
where ws.emp_id = erg.emp_id 
    and ws.wrks_id = wd.wrks_id 
    and Ws.emp_id = es.emp_id 
    and ws.wrks_work_date between ('01-JAN-2016') and ('31-MAR-2016'); 

Antwort

0

Die ES-Tabelle zu nichts verbunden ist

AND ES.EMP_ID =ES.EMP_ID 

sollte wohl sein:

AND WS.EMP_ID =ES.EMP_ID 
+0

Sorry, dass war ein Tippfehler noch ist es nicht läuft wie erwartet. Gibt es ein Problem bei der Verwendung von distinct? – madhan

+0

In Ihrer Abfrage gibt es kein distinct. – Rene

+1

Oh, da ist jetzt. Entschuldige, dass ich meine Zeit verschwendet habe. – Rene

Verwandte Themen