これは不可能だと感じており、退屈な方法でやらなければなりませんが、皆さんの言うことを見ていきます.
約 400 万行、50 奇数列のかなり大きなテーブルがあります。ユニークであるはずの列、エピソードがあります。残念ながら、Episode は一意ではありません。この背後にあるロジックは、Episode が繰り返されているにもかかわらず、行の他のフィールドが時々変更されるということです。ただし、実際には一意の列、Sequence があります。
同じエピソード番号を持つ行を特定したいのですが、それらの間で何かが異なります (シーケンスは別として)。これにより、これが発生する頻度と、許可する価値があるかどうか、または行を削除して無視する必要があるかどうかを判断できます。軽度の不一致の可能性。
私の希望は、エピソード番号を示すテーブルを作成し、各テーブル列の列を作成して、両側の値が異なる場所を識別することです。
SELECT Episode,
CASE WHEN a.Value1<>b.Value1
THEN a.Value1 + ',' + b.Value1
ELSE '' END AS Value1,
CASE WHEN a.Value2<>b.Value2
THEN a.Value2 + ',' + b.Value2
ELSE '' END AS Value2
FROM Table1 a INNER JOIN Table1 b ON a.Episode = b.Episode
WHERE a.Value1<>b.Value1
OR a.Value2<>b.Value2
(これはおそらく穴だらけですが、変更された値を強調するというアイデアが実現することを願っています。)
残念ながら、50 列に対してそのようなクエリを作成するのはかなり面倒です。明らかに、一度しか使用されない場合は、厳密に堅固である必要はありませんが、同時に、コードをコピーパスタすればするほど、何かが見落とされる可能性が高くなります。私の知る限り、Sequence は個別であり、同じ行が異なるものとしてポップアップするため、DISTINCT を検索することはできません。
誰にも役立つクエリや関数がありますか? 上記と同様のクエリ結果を出力するもの、または別のソリューションのいずれか? 私が言ったように、今は重複を削除しようとしているわけではなく、単にそれらを特定するだけです.