2017-07-16 7 views
0

私はこのSQLクエリを書いて、あなたはフィールドART_IDがディスプレイに繰り返すことになります見て、私はSQL要求を繰り返しフィールド

SSELECT * 

       FROM 
    (SELECT R.rng_id AS rang_id, 
       R.RNG_WHS AS RNG_WHS, 
       R.rng_sortie AS rng_sortie, 
       R.rng_start AS rng_start, 
       R.rng_end AS rng_end, 
       R.RNG_ACTIF_DATE AS RNG_ACTIF_DATE, 
       D.dest_type, 
       D.dest_region, 
       R.ART_ID 

    FROM P_STG_POSA.gss_range R 
    INNER JOIN P_STG_POSA.GSS_DESTINATAIRE D ON R.rng_sortie_whs = D.dest_id 
    WHERE rng_inactif='A') R 

    INNER JOIN 
    (SELECT ART_ART_LIBELLE, ART_ID 
    FROM P_STG_POSA.GSS_ARTICLE 
    WHERE art_type_id= 'S4') A 
    ON R.art_id=A.art_id 
+0

この「ART_ID」はどこで繰り返されますか?私は一度だけそれを見つけることができます。あなたの結果にそれを望んでいない場合は、単にそれを選択しないでください。 – dnoeth

+0

i edit code、申し訳ありません –

+0

Teradataは標準SQLの 'JOIN USING'をサポートしていません。したがって、あなたは '*'の代わりにあなたが望む列を列挙する必要があります。または、派生テーブルを使用せず、単一の選択で書き込むこともできます。 – dnoeth

答えて

0

Select *リターンを繰り返されて、フィールドずにそれを書くために別の方法を探していますart_idが2回存在するため、2回戻されます。 *の代わりに返す列を列挙してください。

Select *を使用すると、とにかく悪い考えです。パフォーマンスに影響を与える可能性があり、データを他のアプリケーションで使用するのを困難にします。

select *を使用することは、基礎となるテーブルが変更された場合に特定のクエリが返す列が変更されることを意味します。これは重大な悪影響を及ぼす可能性があります。

関連する問題