Temat: Zdublowane pozycje.
Mam nadzieję, że udało mi się pomóc w twojej kwestii.
Nie mam doczynienia z Optima, ale działanie klauzuli GROUP BY jest identyczne dla SQLa.
SELECT
TrN_NumerPelny,
dbo.seria_dokumentu(trn_trnid),
CASE WHEN BRK_LDokTyp=1 AND BRK_LDokID=BZd_BZdID THEN BRK_PNumer ELSE BRK_LNumer END AS [NumerDok],
Max(BRK_DataDok) as BRK_DataDok, /* Zwarcasz ostatnią datę */
BZd_Termin,
Sum(BRK_Kwota) as BRK_Kwota, /* Jezeli dokument jest rozliczony częściowo, to pewnie musisz posumować sobie kwoty */
CASE WHEN BRK_Waluta<>'' THEN BRK_Waluta ELSE 'PLN' END AS [Waluta],
CASE WHEN BRK_LDokTyp=1 AND BRK_LDokID=BZd_BZdID THEN BRK_PDokTyp ELSE BRK_LDokTyp END AS [DokTyp],
CASE WHEN BRK_LDokTyp=1 AND BRK_LDokID=BZd_BZdID THEN BRK_PDokID ELSE BRK_LDokID END AS [DokID] ,
BRK_BRKID,BZd_NumerPelny, BZd_DataDok,BZd_KwotaSys,
*
from
cdn.BnkZapisy bz
JOIN cdn.BnkRozRelacje brr ON brr.BRR_ZDokID = bz.BZp_BZpID AND BRR_ZDokTyp =2
left outer JOIN cdn.BnkZdarzenia bz2 ON bz2.BZd_BZdID = brr.BRR_DDokID AND brr.BRR_DDokTyp=1
-- left outer - jezeli nie ma rozliczenia
JOIN cdn.TraNag n ON n.TrN_TrNID = bz2.BZd_DokumentID
left outer join cdn.BnkRozKwoty B ON (B.BRK_LDokTyp=1 AND B.BRK_LDokID=bz2.BZd_BZdID OR B.BRK_PDokTyp=1 AND B.BRK_PDokID=bz2.BZd_BZdID)
left join cdn.PodmiotyView pod on (n.TrN_PodID = pod.Pod_PodId and pod.Pod_PodmiotTyp = 1)
-- left outer JOIN cdn.TraNag tn ON tn.TrN_TrNID = brr.BRR_DDokID AND brr.BRR_DDokTyp = 1
WHERE
BZd_DokumentTyp = 1
GROUP BY
TrN_NumerPelny,
dbo.seria_dokumentu(trn_trnid),
CASE WHEN BRK_LDokTyp=1 AND BRK_LDokID=BZd_BZdID THEN BRK_PNumer ELSE BRK_LNumer END AS [NumerDok],
BZd_Termin, /* nie ma w grupowaniu daty (zwraca maksymalną) oraz kwoty (jest sumowana) */
CASE WHEN BRK_Waluta<>'' THEN BRK_Waluta ELSE 'PLN' END AS [Waluta],
CASE WHEN BRK_LDokTyp=1 AND BRK_LDokID=BZd_BZdID THEN BRK_PDokTyp ELSE BRK_LDokTyp END AS [DokTyp],
CASE WHEN BRK_LDokTyp=1 AND BRK_LDokID=BZd_BZdID THEN BRK_PDokID ELSE BRK_LDokID END AS [DokID] ,
BRK_BRKID,BZd_NumerPelny, BZd_DataDok,BZd_KwotaSys,
* /* jeżeli chodzi o gwiazdkę, to nie wiem jakie pola są zwracane i czy przypadkiem nie musisz ich zsumować lub dać wartość max */
PS. Jeżeli udało mi się pomóc, to poniżej podaję adres: kon_z_rzedem@gmail.com, na który dostarcz tego konia :-)