「機能的に重複した」レコードを含むテーブルがあります-IDは異なりますが、「ユーザーデータ」の4つの列(さらに多くの列)は同一です。そのような重複があるすべてのレコードを選択するクエリが機能しています。
ここで、重複の各グループから、最初に列がnullでないものを選択したいと思いA
ます-データから、グループごとにそのような行が最大1行あることを確認しました-そして、この特定のグループに何もない場合、次に column の最小値ID
。
どうすればそれを選択できますか? CASE の THEN で非集計を、ELSE で集計を正確に使用することはできません。たとえば、これは機能しません:
SELECT CASE
WHEN d.A IS NULL THEN d.ID
ELSE MIN(d.ID) END,
d.B,
d.C,
d.E,
d.F
FROM TABLE T
JOIN (my duplicate query here) D ON T.B=D.B
AND T.C=D.C
AND T.E=D.E
AND T.F=D.F
GROUP BY T.B,
T.C,
T.E,
T.F
エラー:
列 A は、GROUP BY 句に指定するか、集計関数で使用する必要があります。