2012-01-26 79 views
0

我有一個查詢,選擇包含重複行的行數,所有列的值是相同的,除了一列我們稱之爲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

如果你有這樣的數據對象加載,你可以使用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)) 
     });