を含むselectクエリで重複した結果を排除これは選択クエリです:がCLOB列
select orderid,ordernum,orderdate,orderxml from orders
クエリが同じordernumで複数の行を返します。 DISTINCTとGroup BYを使用しようとしましたが、orderxmlはclob列です。 クエリで重複した注文番号を削除するにはどうすればよいですか?
を含むselectクエリで重複した結果を排除これは選択クエリです:がCLOB列
select orderid,ordernum,orderdate,orderxml from orders
クエリが同じordernumで複数の行を返します。 DISTINCTとGroup BYを使用しようとしましたが、orderxmlはclob列です。 クエリで重複した注文番号を削除するにはどうすればよいですか?
それぞれordernum
の単一のorderid
を識別するために使用することができます - おそらくminまたはmaxですが、他の関数を使用できます。必要なものに依存します。サブクエリに依存します。識別IDが:
select orderid, ordernum, orderdate, orderxml
from (
select orderid, ordernum, orderdate, orderxml,
max(orderid) over (partition by ordernum) as maxorderid
from orders
)
where orderid = maxorderid;
インライン・ビューは、あなたのテーブルからすべての列と行を取得しますが、同じ順序番号を持つすべての行全体で最大のIDを持っているその結果に追加の列を追加します。 (そこに必要な他のフィルターやコースを追加することもできます)。
外部フィルタは、その最大値に一致する各注文番号のIDにのみ一致します。
これはorderid
がユニークであることを前提としています。少なくともordernum
では、おそらく全体的にはおそらくです。 orderdate
はordernum
の場合は常に同じですが、そうでない場合はパーティションに含めることができ、使用する分析関数を変更する可能性があります。
(そして、どのように、なぜあなたが重複を取得している調査し、それらを停止しようとし、その後、あなたのテーブルから重複を削除 - 慎重に...)
、あなたのテーブルに 'ordernum'を複製しなければならないのはなぜ? 'orderdate'と' orderxml'に同じ値を持っていますか?そうでない場合は、これらの列に対してどの値を選択する必要がありますか? – mathguy
はい、orderdateとorderxmlの値は同じです。 – user576914