MSAccess - Pomoc przy selekcie

0

Witaj

tabela, na której chcę wykonać selecta ma uproszczoną postać:
record_id case_id seq_number status
1 1 1 Started
2 1 2 Paused
3 1 3 Resumed
4 1 4 Finished
5 2 1 Started
6 2 2 Finished
7 3 1 Started
8 3 2 Paused
9 3 3 Aborted

Interesuje mnie takie coś:
Wybierz tylko ten wiersz z każdej grupy (grupą nazywam rekordy o tych samych case_id), gdzie seq_number jest maksymalny w grupie.

Będę wdzięczny za podpowiedź!

0

select case_id, max(seq_number) from table group by cade_id

to powinno zadzialac.

0
gosc napisał(a)

select case_id, max(seq_number) from table group by cade_id

to powinno zadzialac.

i zadziała, kiedy interesują mnie te 2 wartości.
mnie interesuje cały ten rekord, który spełnia to wymaganie

0

to wybierz wszystkie pola jakie chcesz...

select record_id, case_id, max(seq_number), status from table group by record_id, case_id, status

0

dalej nie to, bo docelowa tabela zawiera o wiele więcej kolumn, a grupując po tych wszystkich i zakładając, że dane w rekordach zgrupowanych mogą się różnić, daje nam jako rezultat wiele grup o tym samym case_id (z założenia miało być każde case_id tylko raz..)

0

A tak:
select t1.* from (select case_id, max(seq_number) seQ_number from table group by cade_id) t1 join table t2 on t1.case_id=t2.case_id and t1.seq_number=t2.seq_number

pozdrawiaMM

0
select t1.* from (select test_id, max(sequence_no) from at_testcases gruop by test_id) t1 join at_testcases t2 on t1.test_id = t2.test_id and t1.sequence_no=t2.sequence_no;

błąd składniowy w klauzuli from..

nie znam się na łączeniu tabel przez joina, więc sam nie rozkminię

0

Składnia jest (w miarę) poprawna. poszczególne SQL-e różnią się "smaczkami". Być może trzeba dać 'AS t1'... Niestety, aktualnie nie posiadam Accessa, aby sprawdzić...

pozdrawiaMM

0

dodałem od siebie inner, i dzialą :)
Wielkie dzięki!!!

select t1.* from (select test_id, max(sequence_no) as seq_no from at_testcases group by test_id) t1 inner join at_testcases t2 on t1.test_id = t2.test_id and t1.seq_no=t2.sequence_no;
0

a jak można inaczej łączyć tabele niż przez joina (łączenie) :)

czy masło może nie być maślane...

0

cross/outer apply w ms sql serverze :)
pod spodem pewnie uzywa tych samych mechanizmow co joiny, niemniej jest alternatywa skladniowa

1 użytkowników online, w tym zalogowanych: 0, gości: 1