Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chọn nhóm bản ghi mới nhất theo tên người dùng trong SQL Server 2008

Bạn có một số tùy chọn ở đây nhưng bằng cách thêm ROW_NUMBER được nhóm bởi user và được sắp xếp (giảm dần) trên timestamp của bạn cho phép bạn dễ dàng chọn các bản ghi mới nhất.

Sử dụng ROW_NUMBER

SELECT *
FROM   (
         SELECT ID, voting_ID, username, timestamp, XMLBallot
                , rn = ROW_NUMBER() OVER (PARTITION BY voting_ID, username ORDER BY timestamp DESC)
         FROM   Ballots
       ) bt 
WHERE  rn = 1

Ngoài ra, bạn có thể chọn dấu thời gian tối đa cho mỗi người dùng và tham gia vào dấu thời gian đó.

Sử dụng MAX

SELECT bt.ID, bt.voting_ID, bt.username, bt.timestamp, bt.XMLBallot
FROM   Ballots bt
       INNER JOIN (
          SELECT username, voting_ID, timestamp = MAX(timestamp)
          FROM   Ballots
          GROUP BY
                 username, voting_ID
        ) btm ON btm.username = bt.Username
                 AND btm.voting_ID = bt.voting_ID
                 AND btm.timestamp = bt.timestamp


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL chọn tối đa (ngày) và giá trị tương ứng

  2. Truy vấn trên nhiều cơ sở dữ liệu trên cùng một máy chủ

  3. Cách điều chỉnh hiệu suất của SQL Server, Azure SQL Database và Amazon RDS

  4. Vi phạm ràng buộc CHÍNH CHÍNH

  5. T-SQL có hàm tổng hợp để nối các chuỗi không?