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

Tôi có thể sử dụng câu lệnh CASE trong điều kiện JOIN không?

Đ CASE biểu thức trả về một giá trị từ THEN một phần của mệnh đề. Do đó, bạn có thể sử dụng nó:

SELECT  * 
FROM    sys.indexes i 
    JOIN sys.partitions p 
        ON i.index_id = p.index_id  
    JOIN sys.allocation_units a 
        ON CASE 
           WHEN a.type IN (1, 3) AND a.container_id = p.hobt_id THEN 1
           WHEN a.type IN (2) AND a.container_id = p.partition_id THEN 1
           ELSE 0
           END = 1

Lưu ý rằng bạn cần làm điều gì đó với giá trị trả về, ví dụ:so sánh nó với 1. Câu lệnh của bạn đã cố gắng trả về giá trị của một phép gán hoặc kiểm tra xem có bằng nhau, không có giá trị nào trong số đó có ý nghĩa trong ngữ cảnh của CASE / THEN mệnh đề. (Nếu BOOLEAN là một kiểu dữ liệu thì việc kiểm tra tính bình đẳng sẽ có ý nghĩa.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mệnh đề WHERE trong SQL so khớp các giá trị với dấu cách ở cuối

  2. Tìm các thực thể tham chiếu trong SQL Server:sys.dm_sql_referencing_entities ()

  3. kiểu dữ liệu tương đương mysql

  4. Sử dụng varchar (MAX) so với TEXT trên SQL Server

  5. Áp dụng chéo truy vấn xml hoạt động kém hơn theo cấp số nhân khi tài liệu xml phát triển