Sql 将一列中具有相似值但其他列中具有不同值的多行组合在一起
我正在使用SQL,尝试组合如下所示的表:Sql 将一列中具有相似值但其他列中具有不同值的多行组合在一起,sql,sql-server,string,tsql,group-by,Sql,Sql Server,String,Tsql,Group By,我正在使用SQL,尝试组合如下所示的表: +-----------------------------------+ | Name | Cherries | Pears | Apples | +-----------------------------------+ | User1 | Yes | No | No | +-----------------------------------+ | User1 | No | No | Yes | +
+-----------------------------------+
| Name | Cherries | Pears | Apples |
+-----------------------------------+
| User1 | Yes | No | No |
+-----------------------------------+
| User1 | No | No | Yes |
+-----------------------------------+
| User2 | No | Yes | No |
+-----------------------------------+
| User2 | No | No | Yes |
+-----------------------------------+
+-----------------------------------+
| Name | Cherries | Pears | Apples |
+-----------------------------------+
| User1 | Yes | No | Yes |
+-----------------------------------+
| User2 | No | Yes | Yes |
+-----------------------------------+
放入如下所示的表中:
+-----------------------------------+
| Name | Cherries | Pears | Apples |
+-----------------------------------+
| User1 | Yes | No | No |
+-----------------------------------+
| User1 | No | No | Yes |
+-----------------------------------+
| User2 | No | Yes | No |
+-----------------------------------+
| User2 | No | No | Yes |
+-----------------------------------+
+-----------------------------------+
| Name | Cherries | Pears | Apples |
+-----------------------------------+
| User1 | Yes | No | Yes |
+-----------------------------------+
| User2 | No | Yes | Yes |
+-----------------------------------+
我可以使用
groupby
按Name
对它们进行分组,但我不知道如何处理其他列。您可以使用聚合:
select
name,
max(cherries) cherries,
max(pears) pears,
max(apples) apples
from mytable
group by name
这是因为在字符串方面,
'Yes'
大于'No'
。因此,如果两个值都存在于一个组中,max()
给出了的“是”
您可以使用聚合:
select
name,
max(cherries) cherries,
max(pears) pears,
max(apples) apples
from mytable
group by name
这是因为在字符串方面,
'Yes'
大于'No'
。因此,如果两个值都存在于一个组中,max()
给出的“是”
将您的group by
查询放在问题中,这样我们就可以看到您尝试了什么。非常确定您只想要max
。您想要的一般术语是聚合。分组时,您必须按分组
或聚合
。聚合是一种从多个值中获取一个值的方法,即max/min/sum/avg
等。如果需要特定行中的值,然后你可以使用一个窗口函数。将你的分组依据
查询放在问题中,这样我们就可以看到你尝试了什么。非常确定你只想要max
。你想要的一般术语是聚合。分组时,您必须按分组
或聚合
。聚合是一种从多个值中获取一个值的方法,即max/min/sum/avg
等。如果需要特定行的值,则可以使用窗口函数。