很抱歉,如果之前已经回答过,但所有相关问题似乎都不符合我的目的。
我的表格如下所示:
ID POSS_PHONE CELL_FLAG
=======================
1 111-111-1111 0
2 222-222-2222 0
2 333-333-3333 1
3 444-444-4444 1
我想只为插入选择不同的ID值,但我不关心从重复项中提取哪个特定ID。
例如(有效的SELECT):
1 111-111-1111 0
2 222-222-2222 0
3 444-444-4444 1
在我拥有CELL_FLAG专栏之前,我只是使用聚合函数:
SELECT ID, MAX(POSS_PHONE)
FROM TableA
GROUP BY ID
但我不能这样做:
SELECT ID, MAX(POSS_PHONE), MAX(CELL_FLAG)...
因为我会在行内失去诚信,对吗?
我已经看过一些使用CTE的类似例子,但再一次,没有什么比较适合。
所以这可能是CTE或某种类型的自连子查询可以解决的吗?我现在在一个街区,所以我看不到任何其他解决方案。
答案 0 :(得分:2)
只需在子查询中获取聚合并加入其中:
SELECT a.ID, sub.Poss_Phone, CELL_FLAG
FROM TableA as a
INNER JOIN (SELECT ID, MAX(POSS_PHONE) as [Poss_Phone]
FROM TableA
GROUP BY ID) Sub
ON Sub.ID = a.ID and SUB.Poss_Phone = A.Poss_Phone
这样可以保持非聚合字段之间的完整性,但仍会按MAX(Poss_Phone)
ID
提供{。}}。