私は 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 AとQuery 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