Sql server 如何组合一列中不同的重复行的列值?
我有一个查询,它选择包含重复行的行数,所有列的值都相同,只有一列除外,我们称之为X列。Sql server 如何组合一列中不同的重复行的列值?,sql-server,linq,Sql Server,Linq,我有一个查询,它选择包含重复行的行数,所有列的值都相同,只有一列除外,我们称之为X列。 我要做的是合并所有重复行中X列值的所有值,并用“,”字符分隔这些值。 我使用的查询: SELECT App.ID,App.Name,Grp.ColumnX FROM ( SELECT * FROM CustomersGeneralGroups AS CG WHERE CG.GeneralGroups_ID IN(1,2,3,4) ) AS GroupsCustomers LEFT JOIN Appoint
我要做的是合并所有重复行中X列值的所有值,并用“,”字符分隔这些值。
我使用的查询:
SELECT App.ID,App.Name,Grp.ColumnX
FROM (
SELECT * FROM CustomersGeneralGroups AS CG WHERE CG.GeneralGroups_ID IN(1,2,3,4)
) AS GroupsCustomers
LEFT JOIN Appointments AS App ON GroupsCustomers.Customers_ID = App.CustomerID
INNER JOIN Groups AS Grp ON Grp.ID = GroupsCustomers.GeneralGroups_ID
WHERE App.AppointmentDateTimeStart > @startDate AND App.AppointmentDateTimeEnd < @endDate
我想要的结果是:
ID Name ColumnX
1 test1 1,2,3
我不介意是否必须使用linq而不是sql来执行此操作。我在linq中使用了GroupBy,但它合并了ColumnX值。如果您在对象中加载了此数据,则可以使用linq方法实现此目的,如下所示:
var groupedRecords =
items
.GroupBy(item => new { item.Id, item.Name })
.Select(grouping => new
{
grouping.Key.Id,
grouping.Key.Name,
columnXValues = string.Join(",", grouping.Select(g => g.ColumnX))
});
var groupedRecords =
items
.GroupBy(item => new { item.Id, item.Name })
.Select(grouping => new
{
grouping.Key.Id,
grouping.Key.Name,
columnXValues = string.Join(",", grouping.Select(g => g.ColumnX))
});