繁体   English   中英

如果WHERE子句中的SQL小于和大于

[英]SQL IF LESS THAN AND GREATER THAN in WHERE clause

我想在WHERE中使用CASE WHEN THEN或聚合函数IIF或其他类似的方式:

@iKapacitet
AS
SELECT ID, Name
FROM Private-Accommodation
WHERE [Private-Accommodation].[Otok]='Rab'AND 
IIF(@iKapacitet = 1,[Private-Accommodation].[maxPersons] < 3,
IIF(@iKapacitet = 2, [Private-Accommodation].[maxPersons] < 3 AND [Private-Accommodation].[maxPersons] > 5, 
[Private-Accommodation].[maxPersons] BETWEEN 4 AND 6))
ORDER BY [Private-Accommodation].[RedniBr]

如果使用CASE更容易:

CASE @iKapacitet 
WHEN 1 THEN (CASE [Private-Accommodation].[maxBrOsoba] WHEN < 3)
WHEN 2 THEN (CASE [Private-Accommodation].[maxBrOsoba] WHEN < 3 AND > 5)
WHEN 3 THEN (CASE [Private-Accommodation].[maxPersons] BETWEEN 4 AND 6)
END

通常,将if / case逻辑留在where子句之外更为清晰。 您可能会考虑:

WHERE [Private-Accommodation].[Otok] = 'Rab' AND 
      ((@iKapacitet = 1 AND [Private-Accommodation].[maxPersons] < 3) OR
       (@iKapacitet = 2 AND [Private-Accommodation].[maxPersons] < 3) AND [Private-Accommodation].[maxPersons] > 5) OR
       (@iKapacitet NOT IN (1, 2) AND [Private-Accommodation].[maxPersons] BETWEEN 4 AND 6)
      )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM