by "Plamen Ratchev" <Plamen@[EMAIL PROTECTED]
>
Apr 15, 2008 at 09:50 AM
CASE returns an expression, not logical condition. Here is how you can
change your query:
SELECT dealMasterId
FROM dealmaster AS D
INNER JOIN houses AS H
ON D.HouseId = H.HouseId
WHERE H.Location = @[EMAIL PROTECTED]
AND H.HouseType = @[EMAIL PROTECTED]
AND CASE WHEN @[EMAIL PROTECTED]
= 'within1000'
THEN CASE WHEN H.Size <= 1000 THEN 'T' END
WHEN @[EMAIL PROTECTED]
= 'more1000'
THEN CASE WHEN H.Size > 1000 THEN 'T' END
ELSE CASE WHEN H.size > 0 THEN 'T' END
END = 'T'
AND CASE WHEN @[EMAIL PROTECTED]
= 'within5m'
THEN CASE WHEN H.expectedPrice <= 5 THEN 'T' END
WHEN @[EMAIL PROTECTED]
= 'within10m'
THEN CASE WHEN H.expectedPrice <= 10 THEN 'T' END
WHEN @[EMAIL PROTECTED]
= 'dontcare'
THEN CASE WHEN H.expectedPrice > 0 THEN 'T' END
ELSE CASE WHEN H.expectedPrice > 0 THEN 'T' END
END = 'T'
AND H.EntityStatus = 'A'
AND D.EntityStatus = 'A'
AND D.expectedPrice <= 5
AND D.status = 'offering';
HTH,
Plamen Ratchev
http://www.SQLStudio.com