SELECT DISTINCT(SERV_ID),DHHM,YWBM,CFLB,TIMES FROM YC_SUCCESS_BAK WHERE YWBM = 36742;
执行出来的对应结果却是这? 并没有按照serv_id唯一的
15812723 82882895 36742 1 2009-07-17 10:32:08
15812723 82882895 36742 1 2009-07-17 10:32:09
15812149 82882143 36742 1 2009-07-17 10:32:09
15812149 82882143 36742 1 2009-07-17 10:32:08

解决方案 »

  1.   

    distinct是去除整行的重复值。
      

  2.   

    distinct是去除记录的重复值。
    SELECT SERV_ID,MAX(DHHM),MAX(YWBM),MAX(CFLB),MAX(TIMES) FROM YC_SUCCESS_BAK WHERE YWBM = 36742
    group by SERV_ID; 
      

  3.   

    select * from (
    select SERV_ID,DHHM,YWBM,CFLB,TIMES,Row_number()over(partition by SERV_ID order by SERV_ID) rn
    from YC_SUCCESS_BAK where YWBM = 36742;)
    where rn=1;
      

  4.   


    和我最开始一样,对distinct误解了这里如果只对serv_id做distinct的话。其他的结果如何取叻
      

  5.   

    可以查SELECT DISTINCT(SERV_ID)  FROM YC_SUCCESS_BAK WHERE YWBM = 36742; 
    返回单一的SERV_ID
    SELECT DISTINCT *   FROM YC_SUCCESS_BAK WHERE YWBM = 36742;
    去除重复行
      

  6.   

    运用一下数据窗口知识应该可以轻松解决。
    PS:语句直接打的,不知道有语法语法错误不。。哈哈
    select SERV_ID , DHHM, YWBM, CFLB, TIMES from
    (
    select SERV_ID , DHHM, YWBM, CFLB, TIMES,rank() over(partition by SERV_ID order by TIMES) cc
      FROM YC_SUCCESS_BAK
     WHERE YWBM = 36742 and cc=1 --cc这里代表的意思是返回按SERV_ID分组按时间排列的第一行,当然-                              --也可以取其他行拉,哈哈,按你的需求应该是第一行
    ) tt
      

  7.   

    不明白,可以发我邮件[email protected] 联系
      

  8.   

    昨天的回答有点错误,先补正:select SERV_ID, DHHM, YWBM, CFLB, TIMES
      from (select SERV_ID,
                   DHHM,
                   YWBM,
                   CFLB,
                   TIMES,
                   rank() over(partition by SERV_ID order by TIMES) cc
              FROM YC_SUCCESS_BAK
             WHERE YWBM = 36742) tt
     where tt.cc = 1