Wpis z mikrobloga

Mam tabelę w której mam dane takie jak:
NAZWA NUMER
MISiU 1
MISiU 2
MISiU 3
MISiU 4
PIESEK 1
PIESEK 2
PIESEK 3
PIESEK 4
PIESEK 5
PIESEK 6

Chcę mieć taki wynik
NAZWA NUMER
MISiU 4
PIESEK 6

W Oraclu sobie robię w WHERE:
WHERE (NAZWA, NUMER) IN (SELECT NAZWA, MAX(NUMER) FROM TABELA GROUP BY NAZWA) i to działa

A w SSMS nie działa i pokazuje się: An expression of non-boolean type specified in a context where a condition is expected, near ',')

Help!

#sql #oracle #ssms
  • 12
  • Odpowiedz
@LucaJune: Chat gpt rzecze następująco:
W przypadku środowiska SSMS (SQL Server Management Studio) nie możemy używać składni (NAZWA, NUMER) IN (SELECT NAZWA, MAX(NUMER) FROM TABELA GROUP BY NAZWA), jak to jest możliwe w Oracle. Zamiast tego, możemy zastosować złączenie (JOIN) tabeli z samą sobą, aby osiągnąć oczekiwany wynik. Oto przykład zapytania, które powinno działać w SSMS:

sql
SELECT t1.NAZWA, t1.NUMER
FROM TABELA t1
INNER JOIN (
SELECT NAZWA, MAX(NUMER) AS
  • Odpowiedz
  • 0
@brakslow: Z ROW_NUMBER() próbowałem na początku.
Dałem tak, żeby RN był 1 wtedy, gdy NUMER jest MAX.

I to by działało elegancko, gdyby dało się filtrować po aliasach lub funkcjach okienkowych.

Dla mojej wiedzy możesz mnie naprowadzić jak to dalej ugryźć?
  • Odpowiedz