Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sử dụng Bí danh trong Điều khoản Where hoặc một Lựa chọn Thay thế?

Bạn không thể sử dụng bí danh trong mệnh đề WHERE. Lặp lại biểu thức (lộn xộn) hoặc nếu không hãy đặt SELECT của bạn vào một truy vấn con và sau đó đặt mệnh đề WHERE trong truy vấn bên ngoài:

SELECT Id, Name, City, State
FROM
(
     SELECT
         ID, 
         Name,
         CASE T.N 
             WHEN 1 THEN City1
             WHEN 2 THEN City2
             WHEN 3 THEN City3
         END AS City,
         CASE T.N 
             WHEN 1 THEN State1
             WHEN 2 THEN State2
             WHEN 3 THEN State3
         END AS State
     FROM YourTable
     CROSS JOIN (VALUES(1),(2),(3)) AS T(N)
) T1
WHERE City IS NOT NULL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi ngày và văn hóa:Sự khác biệt giữa DATE và DATETIME

  2. Làm cách nào để tạo một ràng buộc duy nhất trên cột của tôi (SQL Server 2008 R2)?

  3. T-SQL để liệt kê tất cả các ánh xạ người dùng với các vai trò / quyền cơ sở dữ liệu cho một Đăng nhập

  4. Tweet vui nhộn về cuộc đời của một DBA

  5. ADO.NET gọi Thủ tục lưu trữ T-SQL gây ra SqlTimeoutException