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 | +

我正在使用SQL,尝试组合如下所示的表:

+-----------------------------------+
| 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
等。如果需要特定行的值,则可以使用窗口函数。