Forum Użytkownikow Subiekt GT

InsERT GT => Subiekt GT => Wątek zaczęty przez: molu2008 w Styczeń 30, 2024, 13:39:06

Tytuł: Formatowanie SQL pokazujace kontrachentów pojawiających się na więcej niż 2 razy
Wiadomość wysłana przez: molu2008 w Styczeń 30, 2024, 13:39:06
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
Tytuł: Odp: Formatowanie SQL pokazujace kontrachentów pojawiających się na więcej niż 2 razy
Wiadomość wysłana przez: dkozlowski w Styczeń 30, 2024, 22:58:52
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.
Tytuł: Odp: Formatowanie SQL pokazujace kontrachentów pojawiających się na więcej niż 2 razy
Wiadomość wysłana przez: yemet w Styczeń 31, 2024, 08:57:31
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ć).
Tytuł: Odp: Formatowanie SQL pokazujace kontrachentów pojawiających się na więcej niż 2 razy
Wiadomość wysłana przez: dkozlowski w Styczeń 31, 2024, 09:03:38
No NIE można.
Tytuł: Odp: Formatowanie SQL pokazujace kontrachentów pojawiających się na więcej niż 2 razy
Wiadomość wysłana przez: yemet w Styczeń 31, 2024, 09:07:39
Ale można zrobić tak:

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