I have the following query:
SELECT
[Rate],
[RateMon],
[RateTue],
[RateWed],
[RateThu],
[RateFri],
[Ra
You can use something verbose like:
SELECT Rate,
CASE
WHEN RateMon>=RateTue AND RateMon>=RateWed AND RateMon>=RateThu AND
RateMon>=RateFri AND RAteMon>=RateSat AND RateMon>=RateSun THEN RateMon
WHEN RateTue>=RateMon AND RateTue>=RateWed AND RateTue>=RateThu AND
RateTue>=RateFri AND RateTue>=RateSat AND RateTue>=RateSun THEN RateTue
WHEN RateWed>=RateMon AND RateWed>=RateTue AND RateWed>=RateThu AND
RateWed>=RateFri AND RateWed>=RateSat AND RateWed>=RateSun THEN RateWed
WHEN RateThu>=RateMon AND RateThu>=RateTue AND RateThu>=RateWed AND
RateThu>=RateFri AND RateThu>=RateSat AND RateThu>=RateSun THEN RateThu
WHEN RateFri>=RateMon AND RateFri>=RateTue AND RateFri>=RateWed AND
RateFri>=RateThu AND RateFri>=RateSat AND RateFri>=RateSun THEN RateFri
WHEN RateSat>=RateMon AND RateSat>=RateTue AND RateSat>=RateWed AND
RateSat>=RateThu AND RateSat>=RateFri AND RateSat>=RateSun THEN RateSat
WHEN RateSun>=RateMon AND RateSun>=RateTue AND RateSun>=RateWed AND
RateSun>=RateThu AND RateSun>=RateFri AND RateSun>=RateSat THEN RateSun
END AS MaxRate
FROM
[Room]
WHERE
Id=@Id
A lot of typing, but that's one possible answer. You can also do the following, which is slightly less typing:
SELECT Rate, MAX(Rates.Rate) AS MaxRate
FROM
[Room],
(SELECT RateMon AS Rate FROM [Room] WHERE Id=@Id UNION
SELECT RateTue AS Rate FROM [Room] WHERE Id=@Id UNION
SELECT RateWed AS Rate FROM [Room] WHERE Id=@Id UNION
SELECT RateThu AS Rate FROM [Room] WHERE Id=@Id UNION
SELECT RateFri AS Rate FROM [Room] WHERE Id=@Id UNION
SELECT RateSat AS Rate FROM [Room] WHERE Id=@Id UNION
SELECT RateSun AS Rate FROM [Room] WHERE Id=@Id)
AS Rates
WHERE
Id=@Id
Of course, the correct solution would be to normalize your database and make this moot, since a simple join and aggregate would be sufficient.