2016-03-19 4 views
0

Ich versuche, zwei Abfragen eine, die die ersten 22 Zeilen und eine Auswahl der verbleibenden Zeilen der Abfrage wählt. Ich kann die obersten 22 Zeilen auswählen. Aber jetzt muss ich die nächsten 22 Zeilen auswählen. Im Grunde habe ich 2 Berichte im Zugang, einer, der die ersten 22 Reihen anzeigt, und der nächste würde die nächsten 22 Reihen anzeigen. Jede Hilfe würde sehr geschätzt. Kennt jemand eine Funktion, die mich in die richtige Richtung schicken könnte?So wählen Sie die letzte Reihe von Zeilen aus Abfrage in ms Zugriff

Hier meine Frage ist so weit, dass die Top-22 Zeilen auswählen:

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

Es gibt eine ähnliche Frage mit einer Antwort hier: http://stackoverflow.com/questions/10455746/select-records-skipping-rows-in-ms-access –

+0

Ist client_id in dieser Abfrage oder in einem anderen Feld eine eindeutige Spalte? – Parfait

Antwort

0

Betrachten wir eine berechnete Zeilennummer unter Verwendung von Graf von client_id und läuft (ist dieses Paar unter der Annahme, einzigartig in der Aggregatabfrage). Verwenden Sie dann diese Unterabfrage in WHERE Klausel, um den erforderlichen Bereich zu konditionieren. Stellen Sie sicher, dass Sie die TOP-Klausel aus der gespeicherten Abfrage entfernen.

Top 22(Ersatz Qry für Name tatsächlich gespeicherten Abfrage)

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 

Next 22(Ersatz Qry für tatsächliche Abfragenamen)

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 
Verwandte Themen