Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL serwer 2005 - grupowanie wartości, wyświetlanie tylko zmian

Użyłbym wspólnego wyrażenia tabelowego, aby dołączyć sekwencyjny numer wiersza oparty na date_loaded, a następnie użyć go do samodzielnego łączenia, w następujący sposób:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstaw SQL Bulk z relacjami nadrzędny/podrzędny, czy kolejność jest zachowana?

  2. mvc4 - db.SaveChanges() - wartość dziesiętna poza zakresem

  3. Dodawanie elementów tempdb podczas uruchamiania w SQL Server

  4. Znajdź klucz podstawowy z jednej tabeli na liście oddzielonej przecinkami

  5. Jak działa funkcja QUOTENAME() w programie SQL Server (T-SQL)