сравнивая два значения типа int в tsql - PullRequest
3 голосов
/ 19 августа 2011

Как мне получить значение из столбца в таблице, сравнить его со столбцом в другой таблице и вернуть большее из двух значений в одном запросе?

У меня есть два разных запроса для получения этих значений, я просто не знаю, как их сравнить:

select level from cmh where user = 'blah'
select level from cons where user = 'blah'

Мне нужно сравнить два вышеупомянутых уровня и получить большее из двух.

спасибо

Ответы [ 3 ]

2 голосов
/ 19 августа 2011

Что-то вроде (от макушки)

select
case when cmh.level > cons.level 
then cmh.level
else cons.level
end
from cmh inner join cons on cmh.[user] = cons.[user]
where cons.[user] = 'blah'
0 голосов
/ 19 августа 2011

Если таблицы несовместимы (или если вы сравниваете двух разных пользователей и т. Д.), То одним способом вы можете сделать это:

Declare @var1 as int
Declare @var2 as int

SET @var1 = (select level from cmh where user = 'blah')
SET @var2 = (select level from cons where user = 'blah')

SELECT
CASE WHEN isnull(@var1,0) >= isnull(@var2,0) THEN @var1 ELSE @var2 END

В противном случае вы могли бы связать таблицы, чтобы получить полный набор данных, как здесь:

SELECT
   CASE WHEN isnull(T1.level,0) >= isnull(T2.level,0) THEN @var1 ELSE @var2 END as [greatest]
FROM
   cmh T1 LEFT JOIN cons T2
   ON T1.user = T2.user
WHERE T1.user = 'blah'
0 голосов
/ 19 августа 2011

Вы можете использовать UNION для объединения двух запросов, а затем использовать MAX () для получения большего из уровней.

select max(level) as level
from (
     select level from cmh where user = 'blah'
     union all
     select level from cons where user = 'blah'
     ) as result
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...