2013-11-20 3 views
1

Я хочу показать значение только тогда, когда сумма превышает 2сумма с SQL и прямым условием

Странный выход

select 1+3 > 2; 
?column? 
---------- 
t 
(1 register) 

ERROR: column "val" does not exist 
line 1: select 1+3 as val where val > 2; 
           ^

ERROR: syntax error at or near "CASE" 
line 1: select 1+3 as val CASE val > 2; 
         ^

Что такое правильный путь? Ничто из этого не работает.

ответ

1

вы не можете использовать производный столбец в статье where, есть много обсуждений по поводу этого. Один из способов сделать это является использование подзапроса или КТРА

select val 
from (select 1+3 as val) as v 
where val > 2 

или

with cte (
    select 1+3 as val 
) 
select val 
from cte 
where val > 2 
1

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

select val 
from (select 1+3 as val) as vals 
where val > 2 

КТР также работает:

with vals as (
select 1+3 as val 
) 
select val 
from vals 
where val > 2 
0

Вы можете просто написать,

выберите сумму (1 + 3), как вали, имеющую сумму (1+ 3)> 2

В @Denis Рекомендуемая,

select val from (select 1+3 as val) as v where val > 2 
+1

работает здесь, но имеет очень, совсем другое дело. –

+0

@ Денис я не могу понять. он произведет какой-либо неправильный ответ, кроме заданного пользователем результата? – Haji

+0

@DownVoter Не могли бы вы объяснить, что случилось с моим запросом? – Haji

Смежные вопросы