Witam.
Mam pewien problem z zapytaniem. Mam bazę z fakturami które mogę być normalne i efakturami. Chciałbym wyciągnąć różne informacje o kliencie i jedną z nich jest to czy klient jest na "efakturze" czyli jeżeli kiedykolwiek miał to znaczy że jest.
Tworzę pewne zapytanie które zwraca mi prawidłowe dane:
SELECT DISTINCT *
FROM (SELECT copa.ODBIORCA, DECODE(copa.EFAKTURA,'X','TAK',' ','NIE') "Czy Efaktura",
dense_rank() over (partition by copa.ODBIORCA
order by (case when copa.EFAKTURA = 'X'
then 1
else 0
end) desc,
copa.EFAKTURA DESC) rnk
FROM olap_dane.mv_sap_copa copa
)
WHERE rnk = 1
;
Czyli rank jest 1 i to pokazuje wartość X(zamienianą na TAK) jeżeli jest efaktura lub puste(zamienione na NIE) jeżeli nie ma takiej efaktury
Wszystko pięknie tylko jak w większym zapytaniu chciałbym tego użyć to niestety zapytanie grupuje mi nie tylko do tego co było wyżej ale pokazuje również wartość NIE. Problem polega pewnie na moim błednym zgrupowaniu.
SELECT DISTINCT ve."dzial sprzedazy",
(Case ve."dzial sprzedazy" WHEN '0190' THEN 'BH Białystok' WHEN '0290' THEN 'BH Bydgoszcz' WHEN '0530' THEN 'BH Centrala' WHEN '0140' THEN 'BH Kalisz' WHEN '0210' THEN 'BH Katowice' WHEN '0130' THEN 'BH Kielce' WHEN '0230' THEN 'BH Kraków' WHEN '0260' THEN 'BH Olsztyn' WHEN '0120' THEN 'BH Poznań' WHEN '0180' THEN 'BH Szczecin' WHEN '0160' THEN 'BH Warszawa' WHEN '0220' THEN 'BH Wrocław' WHEN '0000' THEN 'DOKK' WHEN '0520' THEN 'Call Center' WHEN '0520' THEN 'Call Center' Else NULL END) BH
,ve.KOD_ODBIORCY "Kod Odbiorcy",ve.NAZWA1 "Nazwa Firmy",ve.NAZWISKO_IMIE_PH "Nazwisko Imię PH", odb.MIEJSCOWOSC,
odb.SEGMENT2017,odb.SEGMENT2018,branza.OZNACZENIA_ODBIORCY,
(SELECT DISTINCT DECODE(copa.EFAKTURA,'X','TAK',' ','NIE')
FROM (
SELECT DISTINCT *
FROM (SELECT copa.ODBIORCA, DECODE(copa.EFAKTURA,'X','TAK',' ','NIE') "Czy Efaktura",
dense_rank() over (partition by copa.ODBIORCA
order by (case when copa.EFAKTURA = 'X'
then 1
else 0
end) desc,
copa.EFAKTURA DESC) rnk
FROM olap_dane.mv_sap_copa copa
)
WHERE rnk = 1
)
)"Czy e-fv"
FROM OLAP_DANE.MV_PRZYPISANIE_VE ve,olap_dane.mv_sap_odbiorcy odb,olap_dane.mv_sap_branze branza,olap_dane.mv_sap_copa copa
WHERE ve.KOD_ODBIORCY = odb.KOD_ODBIORCY
AND odb.KOD_BRANZY = branza.KOD_BRANZY
AND odb.KOD_ODBIORCY = copa.ODBIORCA
AND copa.ODBIORCA = '0001011942'
GROUP BY ve."dzial sprzedazy",ve.KOD_ODBIORCY,ve.NAZWA1 ,ve.NAZWISKO_IMIE_PH, odb.MIEJSCOWOSC,odb.SEGMENT2017,odb.SEGMENT2018,branza.OZNACZENIA_ODBIORCY,copa.EFAKTURA
;
Oto rezultat dla jednego klienta w zapytaniu powyżej:
Proszę o pomoc bo już nie ma na to pomysłów oraz w miarę możliwości o wyjaśnienie błędu abym nie go już więcej.