sql - 如何排除 CHVRSN 的重复项并为 CHVRSN 设置最大值?
问题描述
如何排除 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
解决方案
像这样我建议
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
顺便说一句,您的代码可能更清晰。并非所有列引用都是合格的,所以我只在子选择中包含了明确需要的那些。
推荐阅读
- c# - WPF - 使用 StringFormat 绑定小数
- postgresql - postgresql中主键的下一个值
- apache-kafka - 如何检查关于唯一性 Kafka 的消息?
- datetime - 添加文档时添加到 Firestore 时间戳的时间
- javascript - 计算属性的副作用和更改后的更新
- html - 无法让 Image 浮动到顶部。需要它在页面中的表格旁边
- java - 使用 Java 在 BEGIN:VEVENT 原始数据中显示日期值
- c - 将结构分配给多个结构成员
- firebase - Firebase 虚拟主机 - 如何防止盗链?
- python - 为什么 Qt Designer 会在 PyQt5 中创建额外的不必要的浪费代码?