2017-08-18 1 views
0

J'utilise Aginity workbench pour interroger une base de données Netezza et essayer de créer une requête simple. Fondamentalement, dans une table il y a deux colonnes que je veux combiner pour créer un ID (elles composent deux parties d'ID uniques réels). Dans la requête, je souhaite rechercher des ID uniques, par exemple. la valeur IDRef. Donc, dans l'exemple ci-dessous, je veux retourner toutes les lignes dans la table où la colonne X est égale à 282 et Z est égal à 55. Le code ci-dessous ne retourne rien.Requête SQL Netezza recherchant une valeur concaténée

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

Ainsi, le code ci-dessous, fonctionne bien de la même manière, mais juste essayer d'utiliser une méthode plus intelligente de faire cela et bien sûr faire avancer ma connaissance sql.

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

Répondre

0

Utilisez une sous-requête. Vous ne pouvez pas faire référence à un alias de colonne dans le même niveau où il est défini:

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 ; 

Vous obtiendrez une erreur si IDRef est déjà définie dans HUB_DATABASE. Si tel est le cas, vous devez utiliser un nom différent ou supprimer cette colonne de la sous-requête.