Неверное имя столбца, в операторах выбора, созданных столбцами - PullRequest
0 голосов
/ 01 сентября 2010

Я упростил мою задачу до следующего оператора выбора.

select 
   u.UserId,
   aVariable = cast((case when exists(select * from TblUser u where u.Disabled=1) then 1 else 0 end) as bit), 
from TblUser u
where aVariable = 1

aVariable - это не столбец таблицы, а просто столбец, который получает значение в этом операторе выбора.

Есть ли способ сделать выше, не получая Неверное имя столбца aПеременная ошибка?

Ответы [ 4 ]

3 голосов
/ 01 сентября 2010
select q.* from (
select 
   u.UserId,
   cast((case when exists(select * from TblUser u where u.Disabled=1) then 1 else 0 end) as bit) as aVar, 
from TblUser u
)q 
where q.aVar = 1
1 голос
/ 01 сентября 2010

Вам нужно сделать это:

select 
   u.UserId,
   aVariable = cast((case when exists(select * from TblUser u where u.Disabled=1) then 1 else 0 end) as bit), 
from TblUser u
where cast((case when exists(select * from TblUser u where u.Disabled=1) then 1 else 0 end) as bit) = 1
1 голос
/ 01 сентября 2010

Заявление, выбранное вами как правильное, не имеет смысла.

select q.* from (
select 
   u.UserId,
   cast((case when exists(select * from TblUser u where u.Disabled=1) then 1 else 0 end) as bit) as aVar, 
from TblUser u
)q 
where q.aVar = 1

В приведенном выше заявлении говорится, что выберите всех пользователей из tbluser, если есть один отключенный пользователь.

Я думаю, что вы хотите видеть пользователей в таблице, которые отключены. Если это так, то вы хотите следующий оператор выбора:

SELECT userid, disabled as aVar
FROM TblUser
WHERE disabled = 1

Дайте этому шанс.

Предыдущий ответ удален, поскольку вопрос немного неясен.

1 голос
/ 01 сентября 2010

SELECT должно выглядеть так:

select 
   u.UserId,
   1 as aVariable
from TblUser u
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...