抱歉,如果以前已经回答过,但是所有相关问题似乎都不符合我的目的。
我有一个表,如下所示:
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或某种类型的自联接子查询解决吗?我目前处于封锁状态,因此看不到任何其他解决方案。
只需将您的聚合添加到子查询中并加入它即可:
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)per ID。
MAX(Poss_Phone)
ID