Witam,
próbuję pobrać z bazy pacjentów, którzy skorzystali z usługi w poszczególnych dniach (lub tygodniach, miesiącach - zależy od wyboru użytkownika) w danym przedziale czasu, ale tylko pacjentów NOWYCH, czyli wcześniej nie pobierali żadnych usług. Np. w wyniku mam:
dzien | nowi
11.02.2011 | 4
itd.

Załóżmy, że chodzi nam o dni. Mam tabelę:
teeth_services a w niej m.in. dwie kolumny: idpatient oraz date czyli data wykonania usługi.
Wykombinowałem coś takiego (NIE DZIAŁA):
  1. SELECT DISTINCT ON (kiedy) to_char(teeth_services.date, 'YYYY-MM-DD') AS kiedy, count(teeth_services.idpatient) AS amount
  2. FROM teeth_services
  3. WHERE
  4. teeth_services.date IS NOT NULL AND
  5. teeth_services.idpatient NOT IN ( (SELECT t.idpatient FROM teeth_services AS t WHERE t.date < kiedy AND t.date IS NOT NULL ) )
  6. GROUP BY kiedy
  7. ORDER BY kiedy ASC

Wyskakuje, że kolumna 'kiedy' nie występuję. Jak widać próbuję w warunku where sprawdzić czy idpatient znajduje się w polach zwróconych przez podzapytanie. Domyślam się, że tutaj coś źle robię.
Jak to poprawić questionmark.gif A może w ogóle inaczej powinienem to zrobićquestionmark.gif