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

SQL - Как да направя заявка за повторно приемане в TSQL?

Ето едно начало:

sqlfiddle

нова цигулка

Той получава всяко посещение за всеки UID в реда на admitDT, след което сдвоява всяко посещение със следващото посещение в този резултат. Ако текущата дата на приемане е между последната дата на изписване и 30 дни след нея, изберете я. Все пак има някои странни моменти - показано е, че UID 1 е приет на 12.06.2012 г. и никога не е бил изписан, но след това е приет отново на 20.06.2013 г. и е изписан същия ден.

редактиране:преструктуриран малко, за да се намали броят на присъединяванията

WITH cte AS ( SELECT visitid,uid,dischargedt,admitdt, row_number()over(partition BY uid ORDER BY admitdt) AS r FROM t )SELECTc1.visitid AS v1, c2.visitid AS v2,c1. uid,c1.dischargedt като [Изписан от първо посещение],c2.admitdt като [Приет за следващо посещение]FROM cte c1INNER JOIN cte c2 ON c1.uid=c2.uidWHERE c1.visitid<>c2.visitidAND c1.r+1 =c2.rИ c2.admitdt МЕЖДУ c1.dischargedt И dateadd(d,30,c1.dischargedt )ORDER BY c1.uid 

Резултати :

<предварителен код>| V1 | V2 | UID | ИЗПИСАН ОТ ПЪРВОТО ПОСЕЩЕНИЕ | ДОПУСКАНИ ДО СЛЕДВАЩО ПОСЕЩЕНИЕ ||----|----|-----|------ -|-----------------------------|| 25 | 38 | 2 | 11 юни 2013 г. 16:13:00+0000 | 12 юни 2013 г. 10:10:00+0000 || 38 | 12 | 2 | 12 юни 2013 г. 10:10:00+0000 | 17 юни 2013 г. 06:51:00+0000 || 18 | 34 | 3 | 11 юни 2013 г. 12:08:00+0000 | 12 юни 2013 г. 08:40:00+0000 || 21 | 22 | 3 | 12 юни 2013 г. 14:40:00+0000 | 13 юни 2013 г. 10:00:00+0000 || 22 | 16 | 3 | 14 юни 2013 г. 12:00:00+0000 | 19 юни 2013 г. 04:48:00+0000 |

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server връща грешка Неуспешно влизане за потребител „NT AUTHORITY\ANONYMOUS LOGON“. в Windows приложение

  2. Има ли значение редът на колоните в клауза WHERE?

  3. Актуализирайте един от 2 дубликата в таблица на база данни на sql сървър

  4. T-SQL динамични SQL и Temp таблици

  5. Как да използвате клаузата Where в Select Statement в SQL Server - SQL Server / TSQL Урок, част 109