-1

「customer_id、date、installment_no、amount」列を持つテーブルがあります。今日までの各customer_idの最終分割払いの情報を取得したい。ここで、installment_no は int 型で、新しい分割払いが入金されると、新しいエントリで installment_no が 1 増加します。私のテーブルは次のようになります。

CS1001 | 12-06-2013 | 1 | 2500
CS1002 | 19-06-2013 | 1 | 1600
CS1001 | 14-07-2013 | 2 | 2500

そうするためのsqlcommandステートメントを取得したい。

4

2 に答える 2

1

すべてのレコードを customer_id でグループ化し、すべての顧客のレコードを installment_no で並べ替え、各グループから最大の installment_no を持つレコードのみを選択します。

from c in customers
group c by c.customer_id into g
select g.OrderByDescending(x => x.installment_no).First()

Linq を使用しない場合は、純粋な SQL と同じ

SELECT c.* FROM Customers c
INNER JOIN (
   SELECT customer_id, MAX(installment_no) max_installment
   FROM Customers
   GROUP BY customer_id
) cmax
ON c.customer_id = cmax.customer_id
   AND c.installment_no = cmax.max_installment
于 2013-09-27T06:08:18.863 に答える
0
var result = list.GroupBy(x=>x.customer_id)
                 .Select(g=>g.OrderByDescending(y=>y.installment_no).First())
                 .ToList();
于 2013-09-27T06:08:29.183 に答える