2017-08-18 7 views
0

Agite Workbenchを使用してNetezzaデータベースをクエリし、簡単なクエリを作成しようとしています。基本的に、テーブル内には、IDを作成するために結合する2つの列があります(実際の一意のIDの2つの部分を構成します)。クエリ内でユニークなIDを検索したいIDRef値。したがって、次の例では、テーブル内のすべての行を返します。ここでは、列Xが282、Zが55に等しくなります。以下のコードは何も返しません。Netezza SQLクエリで連結された値を検索する

SELECT T_ROUTE || CSC as IDRef, * 
FROM HUB_DATABASE 
WHERE POSTCODE like 'A%' 
AND CURRENT_RECORD_FLAG = '1' 
AND IDRef = 28255 
LIMIT 100 
; 

ので、以下のコードは、同じように[OK]を動作しますが、ちょうど私のSQLの知識を進めるこれを行うのはもちろんのよりスマートな方法を使用しようとしています。

SELECT * FROM HUB_DATABASE 
WHERE T_ROUTE = '282' 
AND CSC = '55' 
AND POSTCODE like 'A%' 
AND CURRENT_RECORD_FLAG = 1 
LIMIT 100; 

答えて

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で定義されている場合は、エラーになります。その場合は、別の名前を使用するか、サブクエリからその列を削除する必要があります。

関連する問題