当前位置: 代码迷 >> Oracle管理 >> 在线求SQL语句,该如何解决
  详细解决方案

在线求SQL语句,该如何解决

热度:159   发布时间:2016-04-24 04:12:06.0
在线求SQL语句
在线求SQL语句

数据库中 有   name  和 namecode   和  thetime    三个字段

要求:

    当  数据表中 的列中       name  和 namecode   都相同时  , 按 thetime     时间 最大的  取一条。

就是  去除  两条  或多条  重复的  列    中的一列    。

*********************************************************************************
例如:        name                      namecode                thetime  
                      11                               aa                            20141030
                       22                               bb                           20141030
                         22                            bb                           20141029
*********************************************************************************
此时 ,只要    去除  重复列    22                            bb                           20141029        (重复列可能多条,只留一条)

其他的都保留  ,在线等    ,多谢各位大牛!
                      

                      
------解决思路----------------------
这个方法太多了吧
1、
select * from T T1
WHERE NOT EXISTS(SELECT 1 FROM T WHERE name=T1.name and namecode=T1.namecode AND thetime>T1.thetime)

2、
select name,namecode,max(thetime) thetime
from T
GROUP BY name,namecode

3、
select name,namecode,thetime
from(select T.*,row_number()over(partition by name,namecode order by thetime desc) RN)
WHERE RN=1

先写三种吧
  相关解决方案