2017-09-24 6 views
0

Ich erzeuge Datensätze mit Summe Aggregatfunktion und Unterabfrage, aber der Alias ​​funktioniert nicht in der inneren Abfrage. meine Frage istTabelle Alias ​​funktioniert nicht in Unterabfrage in Oracle

select UPP.item_total, 
      (select sum(INN.item_value_afs) total_item_value_afs from 
       (select distinct INN.reg_no,INN.tpt_cuo_nam,INN.item_total,INN.item_value_afs 
        from sigtasad.customs_import_data INN where INN.reg_no=UPP.reg_no and INN.tpt_cuo_nam=UPP.tpt_cuo_nam)) total_item_value, 
    sum(UPP.code_tax_amount), UPP.cmp_nam from SIGTASAD.CUSTOMS_IMPORT_DATA UPP where 
UPP.reg_no='38699' and UPP.company_tin='9003247336' group by   
UPP.reg_no,UPP.tpt_cuo_nam,UPP.cmp_nam,UPP.item_total ; 

diese Abfrage diesen Fehler erzeugen: ORA-00904: "UPP" "TPT_CUO_NAM". Ungültige Kennung

Ich mag dieses Ergebnis wollen !!!

enter image description here

+0

Sie sollen bearbeiten: Fragen und liefern Beispieldaten und eine Erklärung der Logik. –

+0

nicht sicher, was Sie versuchen zu erreichen, aber Sie vermissen einen Aliasnamen für die innerste subselect – ulferts

+0

die obere Abfrage dieser Fehler erzeugen: ORA-00904: „UPP“ „TPT_CUO_NAM“. Ungültige Kennung , dass mein Problem ist @ulferts –

Antwort

0

Ihre Anfrage hat zahlreiche Fehler und schlechte Gewohnheiten. Zum Beispiel:

  • Sie qualifizieren einen Spaltennamen mit einem nicht definierten Tabellenalias.
  • Sie aggregieren nach Spalten nicht im select.
  • Sie verwenden sum() für eine Unterabfrage, die sum() hat.

auf das Bild aus, dass Sie zeigen, möchten Sie wahrscheinlich so etwas wie dieses:

select upp.item_total, 
     sum(item_value_afs) as total_item_value, 
     sum(upp.code_tax_amount), 
     upp.cmp_nam 
from SIGTASAD.CUSTOMS_IMPORT_DATA upp 
where upp.reg_no = '38699' and upp.company_tin = '9003247336' 
group by upp.cmp_nam, upp.item_total ; 

Oder vielleicht:

select upp.item_total, 
     sum(sum(item_value_afs)) over (partition by upp.cmp_nam, upp.item_total) as total_item_value, 
     sum(upp.code_tax_amount), 
     upp.cmp_nam 
from SIGTASAD.CUSTOMS_IMPORT_DATA upp 
where upp.reg_no = '38699' and upp.company_tin = '9003247336' 
group by upp.cmp_nam, upp.item_total ; 
+0

Ich habe die Unterabfrage nur wegen wiederholter Werte in item_value_afs, , verwendet, die die von Ihnen geschriebene Abfrage summiert. –

0

Ihre innerste Unterabfrage

(select distinct nn.reg_no,inn.tpt_cuo_nam, inn.item_total, inn.item_value_afs 
from sigtasad.customs_import_data inn 
where inn.reg_no = upp.reg_no and inn.tpt_cuo_nam = upp.tpt_cuo_nam 
) 

Referenzen ein Tabelle, die nicht verbunden ist (upp). Es hat auch keinen Alias, aber dieses Problem würde später kommen. Bitte beachten Sie, dass es auch eine Art nn.reg_no statt inn.reg_no

Die Struktur der Tabellen angezeigt ist hier nicht zu sein scheint, aber das Problem zu lösen etwas entlang der Linien von bedeuten würde:

(select distinct inn.reg_no,inn.tpt_cuo_nam, inn.item_total, inn.item_value_afs 
from sigtasad.customs_import_data inn, SIGTASAD.CUSTOMS_IMPORT_DATA upp 
where inn.reg_no = upp.reg_no and inn.tpt_cuo_nam = upp.tpt_cuo_nam 
) 
+0

wie man es löst? –

+0

@EngMohammadJalalAhmadzai Ich aktualisiere die anwer – ulferts

+0

Ich werde es jetzt verwenden! –

Verwandte Themen