2016-01-19 2 views
0

Вот мой запрос:СЛУЧАЯ сравнение оператора ALIAS

SELECT DISTINCT v.codi, m.nom, v.matricula, v.data_compra, v.color, 
v.combustible, v.asseguranca, 
(CASE WHEN lloguer.dataf IS NOT NULL THEN 'Si' ELSE 'Llogat' END) AS Disponible 
FROM vehicle v 
INNER JOIN model m on model_codi=m.codi 
INNER JOIN lloguer on codi_vehicle=v.codi 
WHERE Disponible='Si'; 

То, что я пытаюсь сделать это, чтобы показать только те строки, которые имеют «lloguer.dataf» не NULL, но это не Alow мне нужно использовать псевдоним «Disponible», чтобы выполнить последнее сравнение строк.

Что я могу сделать?

Вот как отображается информация (с еще одним атрибутом) без последнего сравнения строк.

enter image description here

+2

использования 'WHERE lloguer.dataf НЕ NULL' вместо – JamieD77

+1

Не можете ли вы просто написать 'где lloguer.dataf IS NOT NULL'? – Aleksej

ответ

2

Проблема заключается в том, что псевдоним еще не существует. Поэтому вам нужно повторить полный код или создать подзапрос.

SELECT * 
FROM (....) YourQuery 
WHERE Disponible='Si'; 

Вы можете прочитать более подробную информацию здесь https://community.oracle.com/thread/1109532?tstart=0

1

Я TSQL парень по своей природе, но вы можете это сделать?

Select distinct codi, nom,matricula, data_compra, colour, combustible, asseguranca from 
(SELECT DISTINCT v.codi, m.nom, v.matricula, v.data_compra, v.color, 
v.combustible, v.asseguranca, 
(CASE WHEN lloguer.dataf IS NOT NULL THEN 'Si' ELSE 'Llogat' END) AS Disponible 
FROM vehicle v 
INNER JOIN model m on model_codi=m.codi 
INNER JOIN lloguer on codi_vehicle=v.codi) 
WHERE Disponible='Si'; 

Как @JuanCarlosOropeza заявил, псевдоним не существует до тех пор, пока данные изначально неправдоподобным. Вот почему вы могли бы использовать псевдоним в предложении order by без использования подзапроса, но не в предложении where, поскольку данные еще не были извлечены.

+0

Объяснение litle будет большим. –

+0

@JuanCarlosOropeza - Сейчас я добавлю. –

1

Удалите случай, когда из блока SELECT, и заменить ИНЕКЕ с:

WHERE lloguer.dataf IS NOT NULL 
Смежные вопросы