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

TSQL Chọn từ Bảng khác nhau dựa trên giá trị CASE

Sử dụng IF (cách thích hợp)

IF @Var = 'AA'
BEGIN
    SELECT ID FROM Table1
    -- WHERE ...
END
ELSE IF @Var = 'BB'
BEGIN
    SELECT ID FROM Table2 
    -- WHERE ...
END
ELSE
BEGIN
    SELECT ID FROM Table3  
    -- WHERE ...
END

Các cách khác (bạn nên tránh nhưng tôi sẽ đăng để tham khảo)

Sử dụng SQL động

DECLARE @sql NVARCHAR(MAX)
SELECT @sql = 'SELECT ID FROM ' + CASE @Var WHEN 'AA' THEN 'Table1' 
                                            WHEN 'BB' THEN 'Table2' ELSE 'Table3' END + ' -- WHERE ...'
EXEC(@sql)

Sử dụng UNION

SELECT Id
FROM Table1
WHERE @Var='AA'
-- AND ...

UNION ALL

SELECT Id
FROM Table2
WHERE @Var='BB'
-- AND ...

UNION ALL

SELECT Id
FROM Table3
WHERE @Var NOT IN('AA', 'BB')
-- AND ...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Windows Event Log Access từ gói SSIS chạy trong SQL Agent Job

  2. Kiểm tra trạng thái của tất cả thư cơ sở dữ liệu trong SQL Server (T-SQL)

  3. Trả về các tham số của một thủ tục được lưu trữ hoặc hàm do người dùng xác định trong SQL Server (ví dụ T-SQL)

  4. Chạy tệp .sql từ Ứng dụng trong C # bằng thư viện SMO

  5. Tham gia đến MAX bản ghi ngày trong nhóm