Đ 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.)