Как исключить дубликаты CHVRSN и иметь максимальное значение для CHVRSN? - PullRequest
0 голосов
/ 11 октября 2018

Как исключить дублирование значения CHVRSN И максимальное значение CHVRSN должно остаться.CHVRSN находится в таблице: WRPDT.WSCLHP B

SELECT DISTINCT C.REGN ,C.SVDC,A.DELR,C.NAME, A.PANO, A.VIN,A.UDAT AS UPDATE_DATE ,A.WONO AS PAID_DATE,B.CHWONO AS DATE_2 ,B.CHAJDT AS ADJ_DATE,
CASE
WHEN PW = '4' THEN 'A'
WHEN PW = '4' THEN 'A'
WHEN PW = '0' THEN 'IP'
WHEN PW = '3' THEN 'IP'
WHEN PW = '2' THEN 'R'
ELSE 'OTHER'
END AS STATUS,
CHVRSN, CHSB

FROM WRPDT.WPPWP A

LEFT OUTER JOIN WRPDT.WSCLHP B
ON A.PWF = B.CHF
AND A.PWLR=B.CDLR
AND A.WONO=B.CHNO

LEFT OUTER JOIN DLPDT.DRDMFP C
ON A.PWDLR = C.DMLR

WHERE SYS2 = '20'
and cdat > 20180809
AND EAMT > 1000
and pw not in ('90', '95', '05') 

AND EXISTS
(SELECT * FROM CADAT.CCAMP WHERE CMIN=PVIN AND (CMCAMP IN ('953')))

ORDER BY 3, 5

1 Ответ

0 голосов
/ 11 октября 2018

Таким образом, я бы предложил

SELECT DISTINCT C.REGN ,C.SVDC,A.DELR,C.NAME, A.PANO, A.VIN,A.UDAT AS UPDATE_DATE ,A.WONO AS PAID_DATE,B.CHWONO AS DATE_2 ,B.CHAJDT AS ADJ_DATE,
CASE
WHEN PW = '4' THEN 'A'
WHEN PW = '4' THEN 'A'
WHEN PW = '0' THEN 'IP'
WHEN PW = '3' THEN 'IP'
WHEN PW = '2' THEN 'R'
ELSE 'OTHER'
END AS STATUS,
CHVRSN, CHSB

FROM WRPDT.WPPWP A

LEFT OUTER JOIN (
    SELECT * 
    FROM WRPDT.WSCLHP
    WHERE CHVRSN IN (SELECT MAX(CHVRSN) FROM WRPDT.WSCLHP) 
    ) AS B
ON A.PWF = B.CHF
AND A.PWLR=B.CDLR
AND A.WONO=B.CHNO

LEFT OUTER JOIN DLPDT.DRDMFP C
ON A.PWDLR = C.DMLR

WHERE SYS2 = '20'
and cdat > 20180809
AND EAMT > 1000
and pw not in ('90', '95', '05') 

AND EXISTS
(SELECT * FROM CADAT.CCAMP WHERE CMIN=PVIN AND (CMCAMP IN ('953')))

ORDER BY 3, 5

Кстати, ваш код может быть более понятным.Не все ссылки на столбцы квалифицированы, поэтому я включил в суб-выбор только те, которые явно необходимы.

...