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

Nhóm dữ liệu bằng cách thay đổi giá trị cột nhóm theo thứ tự

Có một (ít nhiều) kỹ thuật đã biết để giải quyết loại vấn đề này, liên quan đến hai ROW_NUMBER() cuộc gọi, như thế này:

WITH marked AS (
  SELECT
    *,
    grp = ROW_NUMBER() OVER (PARTITION BY product        ORDER BY date)
        - ROW_NUMBER() OVER (PARTITION BY product, price ORDER BY date)
  FROM #ph
)
SELECT
  product,
  date_from = MIN(date),
  date_to   = MAX(date),
  price
FROM marked
GROUP BY
  product,
  price,
  grp
ORDER BY
  product,
  MIN(date)

Đầu ra:

product  date_from   date_to        price 
-------  ----------  -------------  ----- 
1        2012-01-01  2012-01-04     1     
1        2012-01-05  2012-01-08     2     
1        2012-01-09  2012-01-12     1     


  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ách lưu và truy xuất hình ảnh PictureBox vào Cơ sở dữ liệu máy chủ Sql Cột Varbinary (Tối đa) VB.NET

  2. Giao dịch Khung thực thể đang hoạt động lâu dài

  3. Gỡ lỗi quy trình đã lưu trữ trong SQL Server 2008

  4. Cách khắc phục “Danh sách chọn cho câu lệnh INSERT chứa ít mục hơn danh sách chèn”

  5. Làm thế nào để chạy tổng của một cột trong máy chủ sql