I would like to use CASE WHEN THEN in WHERE or agregat function IIF or something else that would work like this:
@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]
If it is easier with 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
It is usually clearer to leave if/case logic outside of where
clauses. You might consider:
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)
)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.