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

SQL untuk mendapatkan daftar tanggal serta hari sebelum dan sesudah tanpa duplikat

Ini akan bekerja untuk Anda:

SELECT MyDate, min(DateType) as DateType
FROM (
    SELECT mydate - 1 AS MyDate, 2 AS DateType
    FROM myTable
    WHERE myTable.fkId = @MyFkId;

    UNION

    SELECT mydate + 1 AS MyDate, 2 AS DateType
    FROM myTable
    WHERE myTable.fkId = @MyFkId;

    UNION ALL

    SELECT mydate AS MyDate, 1 AS DateType
    FROM myTable
    WHERE myTable.fkId = @MyFkId;
) AS myCombinedDateTable
group by MyDate

Catatan:Saya mengubah UNION kedua ke UNION ALL untuk kinerja yang lebih baik; subkueri terakhir tidak akan pernah memiliki duplikat dengan dua subkueri pertama, karena DateType selalu 2 untuk dua yang pertama, dan 1 untuk UNION terakhir permintaan ed.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kapan lebih baik menyimpan flag sebagai bitmask daripada menggunakan tabel asosiatif?

  2. SQL Server:konversi ((int)tahun,(int)bulan,(int)hari) ke Datetime

  3. Mendapatkan nilai dari bidang tipe XML menggunakan di server SQL

  4. Apa nama yang benar untuk tabel asosiasi (hubungan banyak ke banyak)

  5. Bisakah Count(*) mengembalikan nol?