解决方案 »

  1.   

    select *,times=row_number()over(partition by personId order by testdate)
    from tb如果是相同天的呢
    思路一样 控制partition by 即分组依据
      

  2.   

    谢谢版主哈 还有我想问下 上面的数据我是通过这句
    SELECT [PersonId],[MachineId],[TestDate],[bz],[Times] FROM [dbo].[UrinetestReport] WHERE PersonId IN (
       SELECT PersonId FROM [dbo].[UrinetestReport] group by PersonId having count(PersonId) >=2) 
    and bz='1' ORDER BY PersonId asc
    sql 语句查询出来的 其中bz=‘1’ 就是取相同天中的有效的一条数据 现在我想在数据库中更新下 times  貌似 开窗函数只能在select中用 update 有没有办法可以解决的
      

  3.   


    谢谢版主哈 还有我想问下 上面的数据我是通过这句
    SELECT [PersonId],[MachineId],[TestDate],[bz],[Times] FROM [dbo].[UrinetestReport] WHERE PersonId IN (
       SELECT PersonId FROM [dbo].[UrinetestReport] group by PersonId having count(PersonId) >=2) 
    and bz='1' ORDER BY PersonId asc
    sql 语句查询出来的 其中bz=‘1’ 就是取相同天中的有效的一条数据 现在我想在数据库中更新下 times  貌似 开窗函数只能在select中用 update 有没有办法可以解决的
      

  4.   

    可以用with cte as
    (
           select .....................
    )
    update cte set ...............