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

Mengacu pada Alias ​​Kolom dalam Klausa WHERE

SELECT
   logcount, logUserID, maxlogtm,
   DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE ( DATEDIFF(day, maxlogtm, GETDATE() > 120)

Biasanya Anda tidak dapat merujuk ke alias bidang di WHERE ayat. (Anggap saja sebagai keseluruhan SELECT termasuk alias, diterapkan setelah WHERE klausa.)

Tetapi, seperti yang disebutkan dalam jawaban lain, Anda dapat memaksa SQL untuk memperlakukan SELECT untuk ditangani sebelum WHERE ayat. Ini biasanya dilakukan dengan tanda kurung untuk memaksa urutan operasi logis atau dengan Common Table Expression (CTE):

Tanda kurung/Subpilih:

SELECT
   *
FROM
(
   SELECT
      logcount, logUserID, maxlogtm,
      DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
   FROM statslogsummary   
) as innerTable
WHERE daysdiff > 120

Atau lihat jawaban Adam untuk versi CTE yang sama.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa yang setara dengan Oracle dari fungsi IsNull() SQL Server?

  2. 3 Cara Menghapus Baris Duplikat di SQL Server sambil Mengabaikan Kunci Utama

  3. Apa itu Periksa Batasan di SQL Server - Tutorial SQL Server / TSQL Bagian 82

  4. Menggabungkan nilai baris T-SQL

  5. Apa string koneksi sql yang perlu saya gunakan untuk mengakses localhost\SQLEXPRESS dengan Otentikasi Windows atau Otentikasi SQL?