WHERE mamy.id=noworodki.id
Coś tu chyba nie tak. Nie powinno być aby mamy.Id = noworodki.IdMamy?
Prostsze i szybsze:
SELECT top 1 imie, wzrost
FROM noworodki where plec = 0
order by wzrost desc
UNION
SELECT top 1 imie, wzrost
FROM noworodki where plec = 1
order by wzrost desc
Bardziej uniwersalne rozwiązanie dla mssql, na wypadek gdyby było więcej dzieci o takim samym wzroście albo pojawiło się więcej płci:
select n.imie, najwyzsze.wzrost from
(
select plec, max(wzrost) as wzrost
from noworodki
group by plec
) as najwyzsze, noworodki n
where najwyzsze.plec = n.plec and najwyzsze.wzrost = n.wzrost