admin

通过一个不同的列选择记录的子组

sql

抱歉,如果以前已经回答过,但是所有相关问题似乎都不符合我的目的。

我有一个表,如下所示:

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或某种类型的自联接子查询解决吗?我目前处于封锁状态,因此看不到任何其他解决方案。


阅读 234

收藏
2021-07-01

共1个答案

admin

只需将您的聚合添加到子查询中并加入它即可:

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

2021-07-01