选择为table_name

时间:2017-12-15 16:02:33

标签: oracle

从MySQL和SQL Server,我知道我可以“保存”选择如表:

Select * (Select * from Table) as tb.

我在Oracle中尝试了以下内容:

Select Firma, Nr,Tour from(  SELECT
  fahr.FIRMA FIRMA,
  fahr.nr nr,
  fahr.TOUR,
  fahr.ausf_tag ausf_tag,
  fahr.kunde kunde,
  fahrp.artikel artikel,
  fah.bezeichnung,
  fa.fraktion_nr,
  fahrp.eak_nr eak_nr,
  fahrp.auftr_nr auftragsnummer,
  fahrp.auftr_pos auftragsposition,
  fahrp.auftr_upos auftragsunterposition,
  NULL tourgewicht,
  fahr.leistgort leistgort,
  fahr.lo_gpname1 lo_gpname1,
  fahr.lo_strasse lo_strasse,
  fahr.lo_plz lo_plz,
  fahr.lo_ort lo_ort,
  fahr.fzg_nr,
  fahr.pol_kennz,
  fahrzfa.eigner,
  TO_CHAR (fahr.start_zeit, 'HH24:MI:SS') start_zeit,
  TO_CHAR (fahr.ende_zeit, 'HH24:MI:SS') ende_zeit,
  fahr.kilometer,
  fahr.Warenlager,
  fahrp.Warenlager LAGER,
  fahr.TOUR,
  fahrp.KTR KTR,
  fahr.faktura,
  fahrp.rechnung faktura_pos,
  fahr.abrechnung,
  fahr.standort,
  fahr.standort2,
  skp_AUFTRAG_EK.rg_empf,
  skp_AUFTRAG_EK.rg_empf_kz,
  fahrp.preis_ueberschrieben,
  skp_auftrag_ek.ds_branche,


FROM

  skp_ARTIKEL_WARE_Z fa,
  skp_ARTIKEL_Z fah,
  skp_FAHRAUFTRAG fahr,
  skp_FAHRAUFTRAG_POS fahrp,
  skp_FAHRZEUG fahrzfa,
  skp_FIRMA fahrfir,
  skp_AUFTRAG_EK

WHERE

  fahr.FIRMA       = fahrp.FIRMA
AND fahr.nr        = fahrp.nr
AND fahrp.FIRMA    = skp_AUFTRAG_EK.FIRMA(+)
AND fahrp.auftr_nr = skp_AUFTRAG_EK.auftr_nr(+)
AND fahrp.artikel  = fah.art_nr
AND fahr.FIRMA     = fahrzfa.FIRMA(+)
AND fahr.fzg_nr    = fahrzfa.fzg_nr(+)
And Fahr.Firma     = Fahrfir.Firma
and fahrp.artikel  = fa.art_nr(+)
and fahr.firma     between 721 and 778
and fahr.ausf_tag  >= to_date ('01.09.2017 00:00:00', 'DD.MM.YYYY HH24:MI:SS')
and fahr.ausf_tag  <= to_date ('30.09.2017 00:00:00', 'DD.MM.YYYY HH24:MI:SS')) as d

但是我不行,我收到错误:00918。00000 - “列模糊定义”

我是Oracle新手而不是SQL神,所以有人知道什么是错的吗?

1 个答案:

答案 0 :(得分:0)

此处的错误消息非常明确 - 您的SELECT中有重复的列名称。从我看到的,它是TOUR列 - 但请仔细检查,因为可能还有其他重复项。作为一般规则,在执行CREATE TABLE ... AS SELECT

时始终使用所有列的别名