-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 回答