我的表
PERSON | car type | color | make
------------------------------------
mark | sedan | |
kevin | sedan | |
kevin | | blue |
kevin | | | honda
john | | gray |
john | | | toyota
charlie | suv | |
charlie | | orange |
charlie | | | volvo
charlie | sedan | |
charlie | | blue |
我想按人分组,但不是按表达式分组
预期输出
PERSON | car type | color | make
------------------------------------
mark | sedan | |
kevin | sedan | blue | honda
john | | gray | toyota
charlie | suv | orange | volvo
charlie | sedan | blue |
答案 0 :(得分:1)
我们希望person列在人名列上是唯一的,但charlie命名记录是两次双重分组,因此你不可能重命名该列以获得该输出,我已经解决了这个问题{{ 3}}检查。
答案 1 :(得分:0)
如果其他字段包含空白或只包含一个值,则可以安全地使用此查询。
select PERSON, max(car_type) as Car_type, max(color) as color, max(Make) as Make from YourTable group by PERSON
答案 2 :(得分:0)
试试这种方式
Select a.person,a.car_type,b.color,c.Make from (
select PERSON, car_type
From yourtable
Group by Person,car_type
) as a
join (
select PERSON, color
From yourtable
Group by Person,color) as b on a.person=b.person
join (
select PERSON, Make
From yourtable
Group by Person,Make) as c on a.person= c.person
答案 3 :(得分:0)
根据我的理解,只有可能的解决方案是更新car_type
,color
和make
列,而不是拥有新条目或拥有主键列< / strong>即可。因为,没有办法将其他列值关联起来以获得预期的输出(考虑人名charlie的例子)。这样可以减少不必要的插入和总行数。