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

Bandingkan nilai tanggal antara 3 kolom di SQL Server dan tarik informasi aset di SQL Server

Gunakan CASE ekspresi untuk menentukan tanggal terbaru, kedua, dan terlama. Masukkan ke dalam CTE dan gunakan nama kolom di WHERE klausa

WITH CTE AS( SELECT *, RecentDate = CASE WHEN APPR_DATE_1 >= APPR_DATE_2 AND APPR_DATE_1 >= APPR_DATE_3 THEN APPR_DATE_1 WHEN APPR_DATE_2 >= APPR_DATE_3 AND APPR_DATE_2 >= APPR_DATE_1 THEN APPR_DATE_2 WHEN APPR_DATE_3 >= APPR_DATE_2 AND APPR_DATE_3 >= APPR_DATE_1 THEN APPR_DATE_3 END, SecondDate = CASE WHEN APPR_DATE_1 BETWEEN APPR_DATE_2 AND APPR_DATE_3 OR APPR_DATE_1 BETWEEN APPR_DATE_3 AND APPR_DATE_2 THEN APPR_DATE_1 WHEN APPR_DATE_2 BETWEEN APPR_DATE_1 AND APPR_DATE_3 OR APPR_DATE_1 BETWEEN APPR_DATE_3 AND APPR_DATE_1 THEN APPR_DATE_2 WHEN APPR_DATE_3 BETWEEN APPR_DATE_1 AND APPR_DATE_2 OR APPR_DATE_1 BETWEEN APPR_DATE_2 AND APPR_DATE_1 THEN APPR_DATE_3 END, OldestDate = CASE WHEN APPR_DATE_1 <= APPR_DATE_2 AND APPR_DATE_1 <= APPR_DATE_3 THEN APPR_DATE_1 WHEN APPR_DATE_2 <= APPR_DATE_3 AND APPR_DATE_2 <= APPR_DATE_1 THEN APPR_DATE_2 WHEN APPR_DATE_3 <= APPR_DATE_2 AND APPR_DATE_3 <= APPR_DATE_1 THEN APPR_DATE_3 END FROM #ASSET ) SELECT APPR_DATE_1, APPR_DATE_2, APPR_DATE_3, ID, NAME, ADDRESS FROM CTE WHERE DATEDIFF(DAY, SecondDate, RecentDate) > 365 OR DATEDIFF(DAY, OldestDate, SecondDate) > 365

DEMO ONLINE



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ATAU Operator korsleting di SQL Server

  2. Prosedur tersimpan lambat saat dipanggil dari web, cepat dari Management Studio

  3. Bagaimana cara mengubah tajuk kolom dan nilainya menjadi baris di sql?

  4. Mengapa kolom TEXT hanya mengembalikan 4096 byte?

  5. Memutar file video dari sql server blob melalui ashx handler menggunakan HTML5 Video Tag