使用sql& amp;从多个字段中选择不同的一个Date_Time col

时间:2012-01-10 12:09:49

标签: sql group-by union distinct

我有一个表记录用户登录的时间。 我想找到去年登录的所有用户。

所以,我简化了

|  Client_ID  |  DateLoggedIn  |
|      1      |    05/02/10    |
|      2      |    14/05/11    |
|      1      |    26/05/11    |
|      3      |    18/04/10    |
|      2      |    21/12/11    |

我正在尝试使用最近的日期返回ClientID 例如:

|  Client_ID  |  DateLoggedIn  |
|      1      |    26/05/11    |
|      2      |    21/12/11    |
|      3      |    18/04/10    |

我尝试过使用Group By并尝试使用UNION,但我认为我做错了...

感谢所有的帮助!

谢谢大家:)

4 个答案:

答案 0 :(得分:1)

取决于您使用的RDBMS:

Select top 1 client_ID
From table
order by DateLoggedIn desc

或:

SELECT client 
FROM ( SELECT client_ID, 
       RANK() OVER (ORDER BY DateLoggedIn DESC) rank
       FROM table ) 
 WHERE rank = 1

答案 1 :(得分:1)

这是一个聚合函数的简单组合,并且必须限制结果

如果X是您想要提交的日期

select Client_ID, max(DateLoggedIn)
    from table
    group by Client_ID
    having  max(DateLoggedIn) > X

设置X我认为取决于您正在使用的RDBMS

答案 2 :(得分:0)

与其他马克相似:

select Client_ID, max(DateLoggedIn)
from table
where DateLoggedIn > X /* X = one year ago - derivation will be DB-dependant */
group by Client_ID
order by max(DateLoggedIn) desc

答案 3 :(得分:-1)

SELECT Client_ID, DateLoggedIn from TableName
GROUP BY Client_ID
Order By DateLoggedIn DESC