Ćwiczę podzapytania i złączenia ale czegoś mi brakuje.
Przykład:
Podaj imiona i nazwiska pracowników, którzy przyjęli zamówienia o największych wartościach w kwartałach lat 1996 i 1997.
Napisałem to tak:
SELECT YEAR([Data Zamówienia]) [Rok], DATEPART(QUARTER, [Data Zamówienia]) [Kwartał], MAX(Wartość) [Wartość]
FROM
(
SELECT z.IDzamówienia [ID], SUM(pz.CenaJednostkowa*pz.Ilość) [Wartość], p.Imię + p.Nazwisko [Pracownik], z.DataZamówienia [Data Zamówienia]
FROM Zamówienia z
INNER JOIN PozycjeZamówienia pz
ON pz.IDzamówienia = z.IDzamówienia
INNER JOIN Pracownicy p
ON p.IDpracownika = z.IDpracownika
GROUP BY z.IDzamówienia, p.Imię + p.Nazwisko, z.DataZamówienia) AS war
WHERE YEAR([Data Zamówienia]) BETWEEN '1996' AND '1997'
GROUP BY YEAR([Data Zamówienia]), DATEPART(QUARTER, [Data Zamówienia])
Zapytanie zwraca mi maksymalną wartość dla każdego kwartału dla roku 1996 i 1997, ale nie mam jak wyświetlić jeszcze pracownika. Mam kilka takich przykładów, i zawsze napotykam na identyczny problem. Nie mam "uchwytu" żeby dobrać się do tego czego trzeba.
Byłbym bardzo wdzięczny za wyjaśnienie, ew. rozwiązanie i wyjaśnienie. W każdym razie chciałbym to zrozumieć, bo obstawiam że nie jest to skomplikowane.
Załączam schemat bazy:
https://i.paste.pics/1eebb3e9254fcab9ae92cd381a72a18e.png