Netezza SQL查询搜索连接值

时间:2017-08-18 15:23:27

标签: sql netezza aginity

我正在使用Aginity工作台查询netezza数据库并尝试创建简单查询。基本上,在一个表中有两列我想要组合以创建一个ID(它们构成了实际唯一ID的两部分)。在查询中,我想搜索唯一ID,例如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 个答案:

答案 0 :(得分:0)

使用子查询。您不能在定义它的同一级别引用列别名:

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,您将收到错误消息。如果是这样,您需要使用其他名称或从子查询中删除该列。