私は、これらの条件に基づいて、国への旅行者の数を生成するために、SQLスクリプトを作成しようとしています:旅行 SQLスクリプト
- 国
- 自然滞在の年
- 長
- より1ヶ月
- L ESS
- 1週間以上1週間以上が、1ヶ月未満は
最終的な目標は、このような何かを得ることです(1年/ 1国):
私は単一のSQL文を手動で生成する方法を試みましたが、PL/SQLループ経由で行う方法がわかりません。誰かが私にどのように見せてもらえるかどうか感謝します。
以下は、関連データベースのテーブル構造です。
これは私が現在持っているものですが、私は旅行者の数を得ることについてわからない午前:
select c.country_name as country,
a.nature_of_travel,
case d.rn
when 1 then 'More than 1 month'
when 2 then 'Less than 1 week'
else 'Between 1 week and 1 month'
end length_of_stay,
count(*) number_of_trips, -- Supposed to use sum(number_of_travellers) here
to_char(b.from_date,'YYYY') year
from TB_TRAVELITINERARY b
join TB_TRIP a on a.trip_id=b.trip_id
join TB_COUNTRY c on b.country_code= c.country_code
join (select rownum rn from dual connect by level < 4) d on
case when add_months(b.from_date,1) < b.to_date then 1
when b.from_date+7 > b.to_date then 2
else 3
end = d.rn
group by c.country_name,
a.nature_of_travel,
case d.rn
when 1 then 'More than 1 month'
when 2 then 'Less than 1 week'
else 'Between 1 week and 1 month'
end,
to_char(b.from_date,'YYYY')
私は合計(number_of_travellersを使用してみました)しかしそれは仕事をしなかった。 ありがとうございました!
VW_ITINERARY_DURATION { ITINERARY_ID, DURATION_IN_DAYS, DURATION_IN_MONTHS }
...その期間を作成するために使用されています:
VW_ITINERARY_NARRATIVE { ITINERARY_ID, DURATION_NARRATIVE, SORT_ORDER };
を次に、それは簡単です
これを試してください: 'sum(a.number_of_travellers)as number_of_trips'と' a.trip_id'でグループ化して教えてください –