sql >> Database >  >> RDS >> Sqlserver

SQL server 2005 - waarden groeperen, alleen wijzigingen weergeven

Ik zou een algemene tabelexpressie gebruiken om een ​​opeenvolgend rijnummer op te nemen op basis van date_loaded, en dat dan als volgt gebruiken in een self-join:

CREATE TABLE #temp (
    value INT,
    date_loaded DATETIME
)

INSERT INTO #temp VALUES (1,'2012-03-7')
INSERT INTO #temp VALUES (1,'2012-03-6')
INSERT INTO #temp VALUES (1,'2012-03-5')
INSERT INTO #temp VALUES (3,'2012-03-4')
INSERT INTO #temp VALUES (4,'2012-03-3')
INSERT INTO #temp VALUES (1,'2012-03-2')

;WITH cte AS (SELECT ROW_NUMBER() OVER (ORDER BY date_loaded) AS n, value, date_loaded FROM #temp)
SELECT t2.value, t2.date_loaded
FROM cte t2 LEFT JOIN cte t1 ON t2.n = t1.n + 1
WHERE t2.value <> ISNULL(t1.value, -1)

DROP TABLE #temp



  1. DEFAULT-waarde invoegen in een kolom wanneer een parameter NULL is

  2. PHP MySQLi Query tussen twee keer van de query zelf

  3. Wat is het equivalent van ST_DWithin (PostGIS - PostgreSQL) voor MySQL?

  4. MySQL - BETWEEN operator met FLOAT(10,6) gedraagt ​​zich als> en <, in plaats van>=en <=