-1

我有 2 张桌子.. 一张客户桌子.. 和订单表格.. 我正在尝试从每个客户那里获得最后 6 个订单,但是对于所有客户来说……我很难考虑如何做到这一点哈哈..今天是星期五...有什么帮助/想法吗?..如果您需要知道,我正在使用 microsoft sql server studio

这是我现在拥有的代码

select /*top 6*/ c.Company_name, oh.qms_control_nbr, c.reminder_notice 
from orderheader oh inner join clients c on oh.prnt_id = c.id
where c.status = 'Active'
group by c.company_name, oh.date_ordered, oh.qms_control_nbr, c.reminder_notice
order by c.company_name asc, c.reminder_notice asc, oh.Date_ordered desc

这给了我每个客户的所有订单,..只想限制到最后 6 个

所以..它可能会给出这样的结果

_company_____              __order-num___
company a                     1111
company a                     1112
company a                     1113
company a                     1114
company a                     1115
company a                     1116
company b                     1221
company b                     1222
company b                     1433
company b                     1524
company b                     1345
company b                     1436
4

2 回答 2

2

您可以使用ROW_NUMBEROLAP 函数来获得:

根据相关的新信息进行编辑。 我认为这应该得到你正在寻找的东西:

SELECT c.Company_name, oh.qms_control_nbr, c.reminder_notice 
FROM (SELECT t.*,
             ROW_NUMBER() OVER (PARTITION BY prnt_id ORDER BY date_ordered DESC) AS RN
      FROM orderheader t) oh
JOIN clients c
  ON oh.prnt_id = c.id
WHERE c.status = 'Active'
  AND oh.rn < 7
ORDER BY c.company_name asc, c.reminder_notice asc, oh.Date_ordered desc
于 2012-06-08T14:55:52.570 回答
1
select top 6 o.* from clienttable c
inner join orderstable o on c.columname = o.columnname
order by o.OrderProcessDate desc

用正确的列替换columnname和。OrderProcessDate

于 2012-06-08T14:53:59.693 回答