Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL - Bagaimana cara saya meminta penerimaan kembali di TSQL?

Ini permulaan:

sqlfiddle

biola baru

Itu mendapat setiap kunjungan untuk setiap UID dalam urutan acceptDT, kemudian memasangkan setiap kunjungan dengan kunjungan berikutnya dalam hasil itu. Jika tanggal masuk saat ini adalah antara tanggal keluar terakhir dan 30 hari sejak itu, pilihlah. Ada beberapa poin aneh - UID 1 terbukti telah diterima pada 6/12/2012 dan tidak pernah dipulangkan, tetapi kemudian diterima lagi pada 20/06/2013 dan diberhentikan pada hari yang sama.

edit:direstrukturisasi sedikit untuk mengurangi jumlah gabungan

WITH cte AS (
  SELECT visitid,uid,dischargedt,admitdt,
    row_number()over(partition BY uid ORDER BY admitdt) AS r
  FROM t
  )
SELECT
c1.visitid AS v1, c2.visitid AS v2,
c1.uid,
c1.dischargedt as [Discharged from first visit],
c2.admitdt as [Admitted to next visit]
FROM cte c1
INNER JOIN cte c2 ON c1.uid=c2.uid
WHERE c1.visitid<>c2.visitid
AND c1.r+1=c2.r
AND c2.admitdt BETWEEN c1.dischargedt AND dateadd(d,30,c1.dischargedt )
ORDER BY c1.uid

Hasil :

| V1 | V2 | UID | DISCHARGED FROM FIRST VISIT |      ADMITTED TO NEXT VISIT |
|----|----|-----|-----------------------------|-----------------------------|
| 25 | 38 |   2 | June, 11 2013 16:13:00+0000 | June, 12 2013 10:10:00+0000 |
| 38 | 12 |   2 | June, 12 2013 10:10:00+0000 | June, 17 2013 06:51:00+0000 |
| 18 | 34 |   3 | June, 11 2013 12:08:00+0000 | June, 12 2013 08:40:00+0000 |
| 21 | 22 |   3 | June, 12 2013 14:40:00+0000 | June, 13 2013 10:00:00+0000 |
| 22 | 16 |   3 | June, 14 2013 12:00:00+0000 | June, 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. Kesalahan sql pada pembaruan:Pernyataan UPDATE bertentangan dengan batasan FOREIGN KEY

  2. Kunci asing ke kunci komposit

  3. Server Berkinerja Tinggi - Apa yang Harus Saya Gunakan?

  4. jika saya ingin menemukan apa yang mereferensikan objek di SQL Server, apakah mencari syscomments komprehensif?

  5. Apakah mungkin untuk memaksa penguncian tingkat baris di SQL Server?