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

Làm cách nào bạn có thể sử dụng SQL để trả về các giá trị cho một ngày được chỉ định hoặc ngày gần nhất

Bạn có thể thử một cái gì đó như sau:

SELECT date, grp, id
    , (SELECT TOP 1 price
       FROM price_table P2
       WHERE P1.id = P2.id
       AND P1.grp = P2.grp
       AND P2.date <= P1.date
       ORDER BY P2.date DESC)
FROM price_table P1
WHERE P1.date IN ('12/31/2009', '11/30/2009')
AND P1.grp IN ('Group1')

Chỉnh sửa Để có được bản ghi cuối cùng cho mỗi tháng, nhóm và id, bạn có thể thử cách này:

SELECT date, grp, id, price
FROM price_table P1
WHERE P1.date = (SELECT MAX(date)
                 FROM price_table P2
                 WHERE P1.grp = P2.grp
                 AND P1.id = P2.id
                 AND YEAR(P1.date) = YEAR(P2.date)
                 AND MONTH(P1.date) = MONTH(P2.date))
AND P1.grp In ('Group1')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khi thực thi một thủ tục được lưu trữ, lợi ích của việc sử dụng CommandType.StoredProcedure so với sử dụng CommandType.Text là gì?

  2. cột sang hàng trong máy chủ sql?

  3. Tôi có thể tuần tự hóa dữ liệu ngày giờ JSON trong truy vấn SQL Server 2008 không

  4. Có thể tham gia một hàm có giá trị bảng và một bảng khác có tham số không

  5. Những hạn chế đối với SQL Server Compact là gì? (Hoặc - làm thế nào để người ta chọn một cơ sở dữ liệu để sử dụng trên nền tảng MS?)