我有一个包含一些“功能重复”记录的表 - 不同的 ID,但 4 列“用户数据”(甚至更多列)是相同的。我有一个查询工作,它将选择所有具有此类重复项的记录。
现在我想从每组重复项中首先选择列A
不为空的任何一个 - 我已经从数据中验证了每组最多有 1 个这样的行 - 如果在这个特定组中没有,然后是列的最小值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 子句中或在聚合函数中使用。