-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

columnnameOrderProcessDateを正しい列に置き換えます。

于 2012-06-08T14:53:59.693 に答える