如何修改此t-sql查询以返回不同列名的最大值?

Xai*_*oft 6 t-sql sql-server-2008

我有以下查询:

SELECT
        [Rate],
        [RateMon],
        [RateTue],
        [RateWed],
        [RateThu],
        [RateFri],
        [RateSat],
        [RateSun]
    FROM
        [Room]
    WHERE
        Id=@Id
Run Code Online (Sandbox Code Playgroud)

我只想返回RateRateMon,RateTue,RateWed,RateThu,RateFri,RateSat和RateSun之间的最大值,而不是返回所有列,但我很难,因为列名不同.

现在返回的示例结果是:

100,400,400,400,400,600,600,600

其中100是Rate,其他值对应Mon - Sun,但在这种情况下我想返回100和600.

Mik*_*son 8

SELECT  [Rate],
        (SELECT MAX(T.[Rate])
         FROM (VALUES([RateMon]),
                     ([RateTue]),
                     ([RateWed]),
                     ([RateThu]),
                     ([RateFri]),
                     ([RateSat]),
                     ([RateSun])) AS T([Rate])
        ) AS MaxRate
FROM [Room]
WHERE Id=@Id
Run Code Online (Sandbox Code Playgroud)