2016-03-19 7 views
0

最初の22行を選択するクエリとクエリの残りの行を選択するクエリの2つを実行しようとしています。私は上位22行を選択することができます。しかし、今度は次の22行を選択する必要があります。基本的に私は最初の22行を表示し、次の行は次の22行を表示する2つのレポートをアクセスしています。誰かが正しい方向に私を送ることができる機能を知っていますか?ここでmsアクセスでクエリから最後の行セットを選択する方法

は私のクエリは、トップ22の行を選択しているこれまでのところです:

SELECT TOP 22[UB-04_line_items].client_id, [UB-04_line_items].revenue_code, Revenue_Codes.rev_code_desc, [UB-04_line_items].total_chgs, [UB-04_line_items].cpt_code, [UB-04_line_items].service_units, [UB-04_line_items].service_date, [UB-04_line_items].total_chgs, Sum(IIf(IsNull([reason_code])=False,[disputed_amount],0)) AS [AMT DISPUTED], GetList("Select Distinct reason_code From [Itemized_statements] As T1 Where t1.reason_code <> NULL AND t1.client_id = " & [Itemized_statements].client_id & " AND T1.revenue_code = " & [Itemized_statements].revenue_code & "","",", ") AS [Err Code] 
FROM [UB-04_line_items] INNER JOIN (Itemized_Statements LEFT JOIN Revenue_Codes ON Itemized_Statements.revenue_code = Revenue_Codes.revenue_code) ON [UB-04_line_items].client_id = Itemized_Statements.client_id 
GROUP BY [UB-04_line_items].client_id, [UB-04_line_items].revenue_code, Revenue_Codes.rev_code_desc, [UB-04_line_items].cpt_code, [UB-04_line_items].service_units, [UB-04_line_items].service_date, [UB-04_line_items].total_chgs, [UB-04_line_items].total_chgs, Itemized_Statements.client_id, Itemized_Statements.revenue_code 
HAVING ((([UB-04_line_items].client_id)=[Itemized_Statements].[client_id]) AND ((Itemized_Statements.client_id)=[forms]![frmClients]![client_ID]) AND ((Itemized_Statements.revenue_code)=[UB-04_line_items].[revenue_code])) 
ORDER BY Itemized_Statements.client_id; 
+2

類似であります質問の回答はこちら:http://stackoverflow.com/questions/10455746/select-records-skipping-rows-in-ms-access –

+0

このクエリまたは他のフィールドでは、client_idとは一意の列が区別されますか? – Parfait

答えて

0

を(このペアは、集計クエリ内で一意であると仮定した場合)client_idとのカウントを実行することによって算出された行番号を使用することを検討してください。次に、WHERE句でこのサブクエリを使用して、必要な範囲を条件付けます。格納されているクエリから必ずTOP句を削除してください。

トップ22(実際の格納されたクエリ名の代わりのQry)

SELECT (SELECT Count(*) 
     FROM Qry sub 
     WHERE sub.client_id < Qry.client_id 
      OR (sub.client_id = Qry.client_id 
       AND sub.revenue_code <= Qry.revenuce_code)) As RowNo, * 
FROM Qry 
WHERE (SELECT Count(*) 
     FROM Qry sub 
     WHERE sub.client_id < Qry.client_id 
      OR (sub.client_id = Qry.client_id 
       AND sub.revenue_code <= Qry.revenuce_code)) <= 22 

次に22(実際のクエリの名前の代わりのQry)

SELECT (SELECT Count(*) 
     FROM Qry sub 
     WHERE sub.client_id < Qry.client_id 
      OR (sub.client_id = Qry.client_id 
       AND sub.revenue_code <= Qry.revenuce_code)) As RowNo, * 
FROM Qry 
WHERE (SELECT Count(*) 
     FROM Qry sub 
     WHERE sub.client_id < Qry.client_id 
      OR (sub.client_id = Qry.client_id 
       AND sub.revenue_code <= Qry.revenuce_code)) BETWEEN 23 AND 44