codecamp

sql根据某一个字段重复只取第一条数据

SELECT * FROM(  
    SELECT V.VENDOR_CODE,
           V.VENDOR_NAME,
           V.VENDOR_TYPE,
           V.SMTP_ADDR,
           V.MOB_NUMBER,
           U.USER_NAME,
           ROW_NUMBER() OVER(ORDER BY V.VENDOR_CODE) AS RN
    FROM T_BD_VENDOR V,
         T_BASE_USER U,
         '(SELECT S.*   
            FROM (  
                 SELECT T.*, ROW_NUMBER() OVER (PARTITION BY T.VENDOR_CODE ORDER BY T.USER_CODE) AS GROUP_IDX   
                 FROM T_BD_USER_VENDOR_REL T 
                 )S 
            WHERE S.GROUP_IDX = 1
         )R'
    WHERE 1=1
          AND V.VENDOR_CODE = R.VENDOR_CODE(+)
          AND R.USER_CODE = U.USER_CODE(+)
          )
  WHERE RN BETWEEN 1 AND 20

其中绿色部分表示从中间关联表中根据VENDOR_CODE字段重复的只取出一条。 示例图片 如上图只取出根据VENDOR_CODE分组,根据USER_CODE排序的第一条数据。

plsql插入,并按规则生成单号
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

服务器相关

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }