agnieszka p. Napisano Czerwiec 26, 2010 Zgłoszenie Share Napisano Czerwiec 26, 2010 Witam, mam problem z zapytaniem i byłabym wdzięczna za każdą pomoc. Mam tabelkę "tabelka" o kolumnach (column1-column12 oraz sn, tn, registration_date, plec). Zakładam, że "sn" to "session number" a "tn" to "transaction number". W jednej sesji mamy kilka transakcji, a więc może być kilka rekordów z takim samym numerem sesji a kolejnymi numerami transakcji. Czyli mamy numer sesji 1 i dla niej rekordy z numerami transakcji 1,2,3,4. Następnie sesja numer 2 oraz numery transakcji 1,2. Czyli w sumie np 6 rekordów. "&var_date" to zmienna która przyjdzie nam gdzieś z góry, np w argumencie funkcji. Przykładowe zapytanie poniżej: SELECT column1, column10, column2, column11, column12, &var_date AS jakas_data FROM tabelka WHERE (sn, tn, column1, column2) IN (SELECT MAX(sn), MAX(tn), column1, column2 FROM tabelka r WHERE TRUNC(registration_date) <= &var_date GROUP BY column1, column2) AND plec IN ('M') ORDER BY column1, column2, &var_date; Chciałabym na daną datę wybierać odpowiednie wartości z bazy. To znaczy maksymalny numer sesji oraz dla tej sesji maksymalny numer transakcji (dla poszczególnych wartości: column1, column2). Zapytanie powyżej zwraca mi maksymalny numer sesji (dobrze) oraz maksymalny numer transakcji (źle bo wybiera w ramach całej tabeli), natomiast chciałabym aby wybierał maksymalny numer sesji oraz dla niej maksymalny numer transakcji. Podzapytanie powyżej zwróci mi numer sesji 2 oraz numer transakcji 4. Tak więc całe zapytanie zwróci zero wyników. Chciałabym, aby podzapytanie zwróciło numer sesji 2, oraz dla niej najwyższy numer transakcji, czyli także 2. Próbowałam dodać kolejne podzapytanie, ale jakoś nie mogę sobie z tym poradzić. Pomoc bardzo mile widziana Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ra-v Napisano Czerwiec 26, 2010 Zgłoszenie Share Napisano Czerwiec 26, 2010 Może w podzapytaniu spróbuj SELECT MAX(sn), MAX(tn), column1, column2 FROM tabelka r WHERE TRUNC(registration_date) <= &var_date GROUP BY column1, column2 ORDER MAX(tn) DESC lub SELECT MAX(sn), MAX(tn) as `max`, column1, column2 FROM tabelka r WHERE TRUNC(registration_date) <= &var_date GROUP BY column1, column2 ORDER `max` DESC Jak rozumiem `tn` to numer transakcji. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się