我可以使用标志来选择不同的 WHERE 子句吗?像这样的东西。
SELECT fields
from T3 t3
left outer join T1 t1 on T1.Id=t2.Id
WHERE
CASE
WHEN @Status <> 1
THEN (t3.Id = @SId AND sh.StatusId = 3 AND k.StatusId = 1)
ELSE t2.Id = @SID AND t2.StatusID = 12
GROUP BY whatever
Run Code Online (Sandbox Code Playgroud)
首选方式:
WHERE
(@Status <> 1 AND t3.Id = @SId AND sh.StatusId = 3 AND k.StatusId = 1)
OR (t2.Id = @SID AND t2.StatusID = 12)
Run Code Online (Sandbox Code Playgroud)
或者这是更容易阅读的 case 语句:
WHERE
CASE WHEN @Status <> 1
AND t3.Id = @SId
AND sh.StatusId = 3
AND k.StatusId = 1 THEN 1
WHEN t2.Id = @SID
AND t2.StatusID = 12 THEN 1
ELSE 0 END = 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10867 次 |
| 最近记录: |