Ich versuche, ein SQL-Skript zu generieren Anzahl der Reisenden in ein Land auf der Grundlage dieser Bedingungen zu schaffen:SQL-Skript eine Schleife über alle Datensätze mit bestimmten Bedingung
- Land
- Natur Reise
- Jahr
- Dauer
- über 1 Monat
- L ess als 1 Woche
- mehr als 1 Woche, aber weniger als 1 Monat
Das Endziel ist, so etwas zu bekommen (für 1 Jahr/1 Land):
Ich habe versucht, den manuellen Weg (dauert mich eine lange Zeit) der Generierung einzelner SQL-Anweisungen, aber ich bin mir nicht sicher, wie es über eine PL/SQL-Schleife zu tun. Schätze, wenn mir jemand zeigen kann, wie.
Unten ist die Tabellenstruktur in meiner Datenbank mit den relevanten Feldern.
Das ist, was ich zur Zeit, aber ich bin nicht sicher über die Anzahl der Reisenden bekommen:
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')
Ich versuchte Summe mit (number_of_travellers) aber es hat nicht funktioniert. Vielen Dank für jede Hilfe!
Versuchen Sie dies: 'Summe (a.number_von_Travellers) als Anzahl_von_Trips' und Gruppe von' a.trip_id' und lass es mich wissen –