SELECT DISTINCT B.INSUREDNAME AS INSUREDNAME,A.ACCIDENTNO,
MIN(D.CLAIMCOMCODE) AS CLAIMCOMCODE,
DISTINCT C.MODELNAME AS MODELNAME,
MIN(A.DAMAGESTARTDATE) AS DAMAGESTARTDATE,
MIN(A.DAMAGEADDRESS) AS DAMAGEADDRESS,
DISTINCT C.LICENSENO AS LICENSENO
FROM MID_CAR_LREGIST A,
WEB_LIST_CMAIN B,
ODS_CITEMCAR C,
ODS_CAR_LSURVEY D
WHERE A.ACCIDENTNO ='62016420000041083'
AND A.POLICYNO = B.POLICYNO
AND A.POLICYNO = C.POLICYNO
AND A.ACCIDENTNO = D.ACCIDENTNO
AND A.CANCELDATE IS NULL
GROUP BY A.ACCIDENTNO, A.CLAIMCOMCODE;
首先说Group By,你用了min()函数,上面没有使用聚合函数的字段都需要加在Group By后面进行分组。而你只加了两个,其中A.CLAIMCOMCODE
写法还是错的,再说你SQL语句,你这样查如果B表,C表中POLICYNO为外键且有多个,你查出来了的条数就不是唯一的了
楼主是以A.ACCIDENTNO, A.CLAIMCOMCOD分组了,我记得oracle是不允许你查出的字段(你select 后面的字段)有 A.ACCIDENTNO, A.CLAIMCOMCODE这两个字段之外的字段的,当然是允许有函数如MIN、MAX、AVG等等存在的!还有就是楼主的DISTINCT用的好像不对啊!!!