select * from Task left join Users on Task.UserId=Users.UserId where datediff(day,Time,'" + chosetime + "')=0
这是查询所有用户某天的所有信息,但是有的时候每天用户的信息不止一条,想查出所有用户每天的一条信息(最早或者最迟),请问语句如何写?

解决方案 »

  1.   

    分组取每组的前N个数据开发中还会遇到需要对某一组数据先分组,然后取每组的前n条记录的情况不妨试试如下代码/*按CurrentNodeLevel列分组,每组按NodeID排序,取出每个组中的前3个元素
    */
    declare @temp table (NodeID int, CurrentNodeLevel int ,rowNumber int)--定义临时表
    insert into @temp 
    select NodeID,CurrentNodeLevel,ROW_NUMBER()
                           OVER (   partition   by CurrentNodeLevel
                                   order by NodeID ) as rowNumber
    from SchoolTerminalStruct---给临时表中插入数据
    select * from @temp where rowNumber<=3--从临时表中取数据
      

  2.   

    select * from Task left join Users on Task.UserId=Users.UserId where datediff(day,Time,'" + chosetime + "')=0 order by Time(你数据库里的字段) desc(asc)
    --升序降序,自己选择
      

  3.   

    select top 1 .....order by column
      

  4.   

    1)排序得到的结果集,在程序中取一个结果
    2)Top 1 + 排序
    3)4#
      

  5.   

    select A.*,B.* from Task A
    left join Users on A.UserId=B.UserId
    Inner Join (Select UserId,Max(dDateTime) From Task C Group By UserID
                where Convert(dDateTime,Varchar(10),121)='" + chosetime + "')) C
    On A.UserID=C.UserID