を複製します。どのように私はそれを非表示にできますか?ありがとう! 隠す私は、クエリを持つ行のSQL
0
A
答えて
0
次の2つの方法で非表示にできます。どのGRP_ID値が隠されていても問題がなければ、おそらくGRP_ID列を含める必要はありません。その場合は、あなたのSELECT句からGRP_ID列を削除することもできますし、DISTINCT SELECTん:
SELECT DISTINCT TermMsg.TRM_ID,
upper(TermMsg.TRM_LOCALE_CODE) as TRM_LOCALE_CODE,
TermMsg.TRM_NAME,
TermMsg.TRM_DESCRIPTION,
upper(substr(TRM_NAME,1,1)) AS LETTER,
(Term.TRM_PUBLISHED) AS PUBLISHED
FROM EPBS_DATA.GLS_TERM_LOC TermMsg, EPBS_DATA.GLS_TERM Term left join
EPBS_DATA.GLS_TERM_GROUP_ASSIGNMENT tga
on Term.TRM_ID = tga.TRM_ID
WHERE TermMsg.TRM_ID = Term.TRM_ID and TermMsg.TRM_NAME IS NOT NULL
ORDER BY TRM_NAME;
しかし、あなたは本当に、あなたがROW_NUMBER() functionを使用することができ、少なくともいくつかのGRP_ID値を含める必要がある場合:
SELECT q.*
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY TermMsg.TRM_ID ORDER BY tga.GRP_ID) AS ROWNUM, TermMsg.TRM_ID,
upper(TermMsg.TRM_LOCALE_CODE) as TRM_LOCALE_CODE,
TermMsg.TRM_NAME,
TermMsg.TRM_DESCRIPTION,
upper(substr(TRM_NAME,1,1)) AS LETTER,
(Term.TRM_PUBLISHED) AS PUBLISHED,
tga.GRP_ID
FROM EPBS_DATA.GLS_TERM_LOC TermMsg, EPBS_DATA.GLS_TERM Term left join
EPBS_DATA.GLS_TERM_GROUP_ASSIGNMENT tga
on Term.TRM_ID = tga.TRM_ID
WHERE TermMsg.TRM_ID = Term.TRM_ID and TermMsg.TRM_NAME IS NOT NULL
) q
WHERE q.ROWNUM = 1
ORDER BY q.TRM_NAME;
私はあなたのスキーマをテストするデータベースがありませんが、私はそのクエリが動作するはずだと信じています。これは、SELECT DISTINCTが機能しない重複を削除する必要がある場合、Oracleではかなり一般的なパターンです。クエリがサブクエリとして埋め込まれる必要があることがわかります。外部問合せは、ROWNUMが1と等しい場所を選択します。キーは、TRM_ID列によってパーティション化されていることです。基本的には、最終出力で一意にする列をPARTITION BYで指定します。
(あなたは、最終的な出力でROWNUM、その代わりにSELECT Qをしたくない場合。*あなたは、サブクエリから個別たい各列を選択することができます。)
0
代替をnb1987のアプローチを使用してROW_NUMBERは、望ましくない重複(GRP_ID)の原因となっているもの以外のすべての出力列でGROUP BYを使用することになります。 SELECTでは、実際に列が必要な場合はMIN/MAXをGRP_IDとともに使用できますが、選択されている行が気にしません(なぜ?!)。
これはnb1987のソリューションよりも優れているか悪い結果になる可能性がありますので、データで確認してみると意味があります。
関連する問題
- 1. は、私は次のクエリ持つSQLクエリ
- 2. SQLは、私は単純なクエリを持つクエリ
- 3. SQLクエリは、私は、このSQLクエリを持って
- 4. SQLクエリは、私は次のSQLクエリを持っているエラー
- 5. は、どのように私は、エンティティオブジェクトを持つネイティブSQLクエリ
- 6. SQLクエリは、私は2つのテーブルを持って二度
- 7. は、私は次のSQLクエリを持つエンティティ
- 8. MySQLのクエリは、私は2つのSQLテーブル テーブル名持た
- 9. SQLエイリアスでクエリを持つ
- 10. SQLは、私は単純なクエリを持つインデックス
- 11. 私はSQLクエリから次の結果持つJSONオブジェクトPHP
- 12. アップグレードSQLクエリは、私はこのクエリを持って
- 13. 同じ値を持つ行を結合するSQLクエリ
- 14. SQLクエリ:テーブルの最小値を持つ行全体を取得
- 15. 私は次のクエリを持つサブクエリ
- 16. は、私がこのように構築されたクエリ持つSQLクエリに
- 17. 私のSQLクエリは、私は、このクラスを持っている
- 18. 私のSQLはNULL値を持つ行をreurningさ
- 19. 複数のタクソノミーを持つWordpress SQLクエリ
- 20. c#のパラメータを持つ動的SQLクエリ
- 21. 日付のintevalsを持つsqlクエリ
- 22. 同じgroupIDを持つ2つの行を検索するSQLクエリ
- 23. SQL Serverの私は、データを持つテーブルを持っている特定の行
- 24. SQLは、私は次の表持つ
- 25. は、私はすでにこのクエリを持っているSQL
- 26. 多対多リレーションシップを持つsqlクエリ
- 27. SQLクエリ:私は2つのテーブル次した2つの別々の行
- 28. SQLクエリは1つのクエリで実行できますか?
- 29. 私のSQLクエリは
- 30. 最大私は、Oracle DBに次の表(簡体字)を持つSQLクエリ
見た目の重複をどのように隠すべきか誰にでもわかる前に、重複を隠すための許容基準を指定する必要があります。たとえば、引用した場合(TRM_IDが16の場合)、2つの異なるGRP_ID値(6と2)を持つクエリの最後の列はGRP_ID ...です。重複を削除したい場合は、これらの重複のどれを隠す必要がありますか?グループID 6またはグループID 2の行 – nb1987
@ nb1987違いはありません。そこにあった行を隠すことができます – NickDevil