SELECT POLICYNO,CASENO,CLAIMTIMES, LTRIM(MAX(SYS_CONNECT_BY_PATH(LICENSENO, ',')), ',') LICENSENO
FROM (SELECT LICENSENO, POLICYNO,CASENO,CLAIMTIMES, ROW_NUMBER() OVER(PARTITION BY POLICYNO,CASENO,CLAIMTIMES ORDER BY LICENSENO DESC) RN
FROM ODS_CAR_LSURVEYLOSS
WHERE KINDCODE='030018' )
START WITH RN = 1
CONNECT BY RN - 1 = PRIOR RN
AND POLICYNO = PRIOR POLICYNO
AND CASENO = PRIOR CASENO
AND CLAIMTIMES=PRIOR CLAIMTIMES
GROUP BY POLICYNO,CASENO,CLAIMTIMES这个sql中为啥取MAX?
很简单,你不用 max 函数,看看是什么效果,那么你就知道max函数是做什么的,你就知道 SYS_CONNECT_BY_PATH 这个函数的特性了。
嘿嘿,我就是这么测试的,然后知道了。。。不过也要谢谢啦。。。
@培培@java: 没注意,原来一楼是楼主啊。。
@jone_e: 哈哈,是呀是呀。。。
因为要分组,取最长的(也就是要的结果),祛除重复。。。