2011-01-10 2 views
0

ich Abfrage etwas wie dieses:SQL Query ausführen und in der gleichen Zeit die Anzahl der Datensätze, zurückgegeben

SELECT YEAR, 
     period, 
     ROUND(a.NUMERATOR/b.total_sum, 0) avg_val FROM 

(Select ...) subQuery1, 
(Select ...) subQuery2 

ORDER BY YEAR, period 

Ich möchte auch die Abfrage die Anzahl der Datensätze wissen, zurückkehrt.

Wie soll ich die Abfrage ändern?

+1

Fügen Sie eine neue Spalte, COUNT (*) 'zurückzukehren Anzahl der Zeilen passend Ihre Abfrage (wenn Ihr Provider nicht bereits eine Möglichkeit hat, die Anzahl der zurückgegebenen Zeilen zu erhalten). –

Antwort

0

Angenommen, die Abfrage gibt N Zeilen zurück. Soll die Zahl N zu JEDER Zeile hinzugefügt werden?

Ich nehme nicht an. Dann benötigen Sie eine separate Abfrage, um die Anzahl der Zeilen in den Ergebnissen Ihrer Abfrage zurückzugeben. Sie können es wie folgt tun:

SELECT COUNT(*) FROM 
(Select ...) subQuery1, 
(Select ...) subQuery2 

By the way, es besser ist, ein zwischen subQuery1 und subQuery2 JOIN und nicht nur ein Komma. Ein JOIN wird Ihre Abfrage lesbarer machen.

+0

gibt es GROUP BY-Klausel, die die Anzahl der Datensätze bestimmt. Nee. Ich möchte nicht, dass die Zahl N zu jeder Zeile addiert wird. Ich möchte nur die Anzahl der Datensätze, die durch Ausführen der Abfrage zurückgegeben. – HanuAthena

+0

Verwenden Sie also die Abfrage, die ich Ihnen gab, das ist, was es tut. –

1

Ich weiß, dass in SQL Server, um die Anzahl der von der SQL-Anweisung betroffenen Zeilen zu erhalten, Sie @@rowcount aus Ihrer Abfrage zurückgeben sollten. In Oracle sollte es etwas Ähnliches, wie sql%rowcount ich denke, nach diesem Beitrag sein: http://www.dbasupport.com/forums/showthread.php?t=20077

haben auch diesen Beitrag sehen Need a row count after SELECT statement: what's the optimal SQL approach?

+0

Das ist etwas anderes. HanuAthena fragte nach SELECT, nicht UPDATE. –

Verwandte Themen