我有一个查询,它选择包含重复行的行数,所有列的值都相同,只有一列让我们称之为X列。
我想要做的是在所有重复的行中组合X列值的所有值,并用','char。分隔值
我使用的查询:
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
不同的列是ColumnX,列ID和名称是相同的,但ColumnX将是不同的
例如:
如果查询将返回如下行:
ID Name ColumnX
1 test1 1
1 test1 2
1 test1 3
我想要的结果是:
ID Name ColumnX
1 test1 1,2,3
我不介意我是否必须使用linq而不是sql 我在linq中使用了GroupBy,但它合并了ColumnX值。
答案 0 :(得分:0)
如果您在对象中加载了此数据,则可以使用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))
});