Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kelompokkan data dengan mengubah nilai kolom pengelompokan secara berurutan

Ada (kurang lebih) teknik yang diketahui untuk memecahkan masalah semacam ini, yang melibatkan dua ROW_NUMBER() panggilan, seperti ini:

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)

Keluaran:

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. Apakah Kunci Utama diperlukan di SQL Server?

  2. Gaji Tertinggi Kedua

  3. Kesalahan Koneksi SQL Server 2008 Tidak ada proses di ujung pipa yang lain

  4. Bagaimana cara memindahkan tabel ke FileGroup tertentu di SQL Server 2008

  5. Pilih hitungan dari tabel lain ke setiap baris di baris hasil