SQL-запрос Netezza ищет объединенное значение
Я использую Aginity Workbench для запроса базы данных netezza и пытаюсь создать простой запрос. По сути, в таблице есть два столбца, которые я хочу объединить для создания идентификатора (они составляют две части фактических уникальных идентификаторов). В запросе я хочу искать уникальные идентификаторы, например, значение IDRef. Поэтому в приведенном ниже примере я хочу вернуть все строки в таблице, где столбец X равен 282, а Z равен 55. Приведенный ниже код ничего не возвращает.
SELECT T_ROUTE || CSC as IDRef, *
FROM HUB_DATABASE
WHERE POSTCODE like 'A%'
AND CURRENT_RECORD_FLAG = '1'
AND IDRef = 28255
LIMIT 100
;
Таким образом, приведенный ниже код работает нормально таким же образом, но я просто пытаюсь использовать более умный способ сделать это и, конечно, расширить свои знания SQL.
SELECT * FROM HUB_DATABASE
WHERE T_ROUTE = '282'
AND CSC = '55'
AND POSTCODE like 'A%'
AND CURRENT_RECORD_FLAG = 1
LIMIT 100;
1 ответ
Используйте подзапрос. Вы не можете ссылаться на псевдоним столбца на том же уровне, где он определен:
SELECT hb.*
FROM (SELECT T_ROUTE || CSC as IDRef, hd.*
FROM HUB_DATABASE hd
WHERE POSTCODE like 'A%' AND
CURRENT_RECORD_FLAG = '1'
) hb
WHERE IDRef = 28255
LIMIT 100 ;
Вы получите ошибку, если IDRef
уже определено в HUB_DATABASE
, Если это так, вам нужно использовать другое имя или удалить этот столбец из подзапроса.