3

私は Oracle でビューを作成することに行き詰まっていますが、ビューを作成する前に常に最初にテストし、常に次のエラーが発生しました: Ora-00904。

これが状況です。この 1 つのクエリ セットをクエリ Aと言うと、 UNION ALLを使用してクエリ A自体と組み合わせる必要があり、別のより大きなクエリ セット-クエリ Bを作成するためにいくつかの変更を適用するだけです。私がこれをやり続ける主な制約はデータベース設計であり、私は会社でそれを変更する立場にないので、それに適応する必要があります. クエリ AはクエリAを 6 回結合してクエリ Bを作成します。追加の Major 制約はクエリ Bですは 1 人のデータベース ユーザーからのものですが、同じクエリを取得する必要がある同じ構造を持つ 54 人のデータベース ユーザーがいます。クエリ B (db user1)ユニオンクエリ B (db user2)ユニオンクエリ B (db user3)というように 54 まで続き、最終的にクエリ Cを作成します --- 最終出力。私のスクリプトはすでに 6048 行に達しているため、Query AQuery Bをテストしても発生しないこの問題が発生しました。すべてのテーブル名、所有者名、および列名はすべて正しいのですが、そのエラーが発生しました。

これはコードです (54x6 回繰り返す必要があります) - クエリ A. クエリ B は、いくつかの同様の変更のみを適用します。

Select 
  '2013' "YEAR",
  Upper(a.text_month) "MONTH",
  Upper('Budget') "VERSION",
  case
    when length(b.level1_name) > 5 then  'Parent'
    else 'SUBSIDIARIES'
  end "COMPANY_GROUP",
  case
    when length(b.level1_name) < 6 and b.level1_name <> '1000' then  'Subsidiaries'
    else  '1000  Parent' 
  end "COMPANY",
  case
    when length(b.level1_name) < 6 and b.level1_name <> '1000' then  'SUBS'
    else  '1000'
  end "COMPANY_CODE",
  case
     when length(b.level1_name) > 5 then  'Parent'
    else 'SUBSIDIARIES'
  end "COMPANY_NAME",
  b.level1_displayname "DIVISION",
  b.level1_name "DIVISION_CODE",
  case
    when length(b.level1_name) > 5 then  ltrim(upper(substr(b.level1_displayname, 8)))
    else   upper(ltrim(substr(b.level1_displayname, 10)))
  end "DIVISION_NAME",
  upper(a.text_nature_of_trip) "NATURE_OF_TRAVEL",
  upper(a.text_placeeventstraining) "TRAVEL_DETAILS",
  upper(a.text_country) "COUNTRY",
  a.text_name_of_employee "EMPLOYEE_NAME",  a.float_no_of_attendees "NO_OF_ATTENDEES",    
  a.text_sponsored "SPONSORED",
  a.text_remarks "REMARKS",
  'OTHER TRAVEL EXPENSES' "COST_ELEMENT", 
   a.FLOAT_702120005_OTHER_TRAVEL_E "AMOUNT"
From PUBLISH_PNL_AAAA_2013.et_travel_transaction a, 
PUBLISH_PNL_AAAA_2013.cy_2elist b
Where a.elist = b.level3_iid
4

1 に答える 1