Autor Wątek: Formatowanie SQL pokazujace kontrachentów pojawiających się na więcej niż 2 razy  (Przeczytany 733 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline molu2008

  • Nowy użytkownik
  • *
  • Wiadomości: 6
  • Reputacja +0/-0
  • Wersja programu: GT 1.60
Dzień dobry

Walczę od pewnego czasu z ustawieniem formatowania które podświetli mi kontrahentów którzy pojawiają się więcej niż 1 raz na liście zamówień od klienta (zdarza się u nas że system bez sensu rozbija zamówienia, miało by to zwrócić moją uwagę aby to sprawdzić)

Aktualnie mam coś takiego:
CASE WHEN (SELECT COUNT(vwDok4ZamGrid.dok_OdbiorcaAdreshId) FROM vwDok4ZamGrid WHERE vwDok4ZamGrid.dok_OdbiorcaAdreshId=Adres.adrh_Id  GROUP BY vwDok4ZamGrid.dok_OdbiorcaAdreshId  HAVING COUNT(*)>1)>=2
THEN 1
ELSE 0
END

Czegoś mi tutaj brakuje (najpewniej wiedzy :) ), płacę złotem za podpowiedz gdzie zbłądziłem w swoim rozumowaniu

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17059
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Widzę co najmniej dwa problemy...

1) Nie jest uwzględniany status realizacji zamówienia.
2) Nie sprawdzasz kontrahentów tylko ich historyczne adresy, a może być tak, że dla każdego zamówienia jest tworzony nowy adres historyczny kontrahenta.
Daniel, Białystok.

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1250
  • Reputacja +46/-1
  • Wersja programu: Navireo
Plus, jeśli dobrze zrozumiałem, mają się oznaczyć zamówienia wyłącznie pojawiające się obecnie na liście - czyli przy filtrowaniu np. na ostatnich 30 dni mają zostać oznaczone wyłącznie takie przypadki z ostatnich 30 dni a starsze zamówienia mają zostać zignorowane do tego podzapytania powinny być przekazane warunki filtrowania (nie wiem czy to można zrobić).

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17059
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
No NIE można.
Daniel, Białystok.

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1250
  • Reputacja +46/-1
  • Wersja programu: Navireo
Ale można zrobić tak:

case when count (*) over (partition by dok_PlatnikId)>1 then 1 else 0 end

Forum Użytkownikow Subiekt GT