2016-03-05 48 views
1

我想在再使用CASE WHEN WHERE或agregat功能IIF还是其他什么东西,将工作是这样的:SQL若小于和大于在WHERE子句

@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 
+0

请你说清楚问题,以便其他人可以帮助你 – Rosetta

回答

2

如果/ where条款之外的/ case逻辑通常会更清楚。你可能会考虑:

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