尽管groupby表达式上的值不同,但仍对查询项进行分组

n53p2ov0  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(305)

我试图找到一种方法,将表中的项按以下3列进行分组
初始表:

_id | ind_cel_phone | ind_home_phone
------------------------------------
1   |    TRUE       |     FALSE
1   |    FALSE      |     FALSE
2   |    TRUE       |     FALSE
3   |    TRUE       |     FALSE
4   |    TRUE       |     FALSE
2   |    FALSE      |     FALSE
5   |    TRUE       |     TRUE
6   |    TRUE       |     TRUE
1   |    FALSE      |     TRUE

我期待的结果是:

_id | ind_cel_phone | ind_home_phone
------------------------------------
1   |    TRUE       |     TRUE
2   |    TRUE       |     FALSE
3   |    TRUE       |     FALSE
4   |    TRUE       |     FALSE
5   |    TRUE       |     TRUE
6   |    TRUE       |     TRUE

注意:
_id=1得到三行,第一行为真,第二行为假,第三行为假,结果为真
_id=2得到两行,第一行为true false,第二行为false,结果为true false
其中,如果有两行或多行具有相同的id,但它们的ind列具有不同的值,则真值具有优先级。
我试过这样的方法:

SELECT
    _id
,   ind_cel_phone
,   ind_home_phone
FROM base_table
GROUP BY _id
    ,   ind_cel_phone
    ,   ind_home_phone

由于值不同,我的结果表与初始结果表相同,而不是预期结果。
有没有一种方法可以将它们分组以获得预期的结果?

cvxl0en2

cvxl0en21#

bool_or() 应该这样做:

select _id, bool_or(ind_cel_phone), bool_or(ind_home_phone)
from base_table
group by _id

相关问题