Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL, ако записът е равен на записа преди него

;WITH MyCTE AS
(
    SELECT *, 
           ROW_NUMBER()OVER (ORDER BY TextString) AS rn
    FROM   Table1
)
SELECT T1.TextString AS T1String,
       T2.TextString AS T2String,
       CASE WHEN T1.TextString = T2.TextString THEN T1.ID ELSE '' END AS NewCode,
       CASE WHEN T1.TextString = T2.TextString THEN T2.ID ELSE '' END AS OldCode
FROM   MyCTE T1
       LEFT JOIN MyCTE T2
           ON T1.rn = T2.rn+1

Демонстрация на SQL Fiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Мога ли да използвам няколко с?

  2. Как да върна две колони от първата таблица, ако само една колона частично съвпада с втората?

  3. Синтаксис на for-loop в SQL Server

  4. Как да преименувате база данни на SQL сървър с помощта на T-SQL

  5. Обработка на отрицателни стойности с sql