Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

समूह डेटा को क्रम में समूहीकृत कॉलम मान के परिवर्तन के अनुसार

इस तरह की समस्या को हल करने की एक (अधिक या कम) ज्ञात तकनीक है, जिसमें दो ROW_NUMBER() कॉल, इस तरह:

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)

आउटपुट:

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. किसी भी JSON को SQL सर्वर में की-वैल्यू पेयर (EAV फॉर्मेट) की सूची में पढ़ें

  2. SQL सर्वर से Genero को जोड़ना

  3. मेरे लेन-देन की अखंडता TransactionInDubtException अपवाद के साथ खो गई है

  4. SQL सर्वर में टेबल-वैल्यूड फंक्शन क्या है?

  5. पर्ल OLE32 MSSQL dateadd फ़ंक्शन परिणामों पर कर्सर प्रकार ने त्रुटि बदल दी