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

Truy vấn SQL để nhận giá trị tối đa dựa trên giá trị tối đa khác nhau cho nhiều bản ghi

SELECT
  MAX(id) id,
  po_nbr
FROM
  temp
GROUP BY
  po_nbr

Để có ngày được liên kết, bạn có thể làm (hãy cẩn thận, điều này ngụ ý một id tuần tự):

SELECT
  temp.id,
  temp.po_nbr,
  temp.crt_ts
FROM
  temp
  INNER JOIN (
    SELECT MAX(id) id FROM temp GROUP BY po_nbr
  ) latest ON latest.id = temp.id

Nếu không có id tuần tự, nó sẽ là:

SELECT
  MAX(temp.id) id,
  temp.po_nbr,
  temp.crt_ts
FROM
  temp INNER JOIN (
    SELECT   MAX(crt_ts) crt_ts, po_nbr 
    FROM     temp i
    GROUP BY po_nbr
  ) latest ON latest.crt_ts = temp.crt_ts AND latest.po_nbr = temp.po_nbr
GROUP BY
  temp.po_nbr,
  temp.crt_ts

GROUP BY có thể bị bỏ qua nếu đảm bảo không có hai ngày bằng nhau trên mỗi po_nbr nhóm.

Các chỉ mục trên crt_tspo_nbr trợ giúp trong truy vấn cuối cùng, tạo một chỉ mục kết hợp sẽ là tốt nhất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cột sang hàng trong máy chủ sql?

  2. Chúng ta có thể tạo hàm có giá trị vô hướng trong SQL Server như là xác định và chính xác không?

  3. Cách trả về số nhóm tăng dần trên mỗi nhóm trong SQL

  4. Không thể mở cơ sở dữ liệu mặc định người dùng. Đăng nhập thất bại. sau khi cài đặt SQL Server Management Studio Express

  5. lỗi, dữ liệu chuỗi hoặc nhị phân sẽ bị cắt ngắn khi cố gắng chèn