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, Если это так, вам нужно использовать другое имя или удалить этот столбец из подзапроса.

Другие вопросы по тегам