# MSSQL Server Ergebniszeilen beschränken



## Thomas Darimont (2. August 2005)

Hallo!

 Über das Kommando:
 SET ROWCOUNT X
 (X= Maximale Anzahl an Ergebniszeilen)

 Kann man die Anzahl der Ergebniszeilen einschränken.
 Bsp:

```
SET ROWCOUNT 10
 select * from dbo.Customers;
```
 
 Gruß Tom


----------



## TurnMeOn (10. August 2005)

dir kann man glaub ich nicht mehr helfen =)
sieh es bitte im positivem sinne... danGe...

ciao

ps... 
ein eintrag ohne problemstellunG =) wie langweilig... joC


----------



## chironex (10. August 2005)

Wie wärs mit einem Einzeiler?

select top 10 * from dbo.Customers


----------



## andi_g69 (10. August 2005)

Dafür wirkt sich SET ROWCOUNT n auch auf andere Statements aus, zB so:

 SET ROWCOUNT 10
 delete from dbo.Customers;

*mal fleissig mit Klugsch....*


----------



## Nico Graichen (10. August 2005)

Immer diese Besserwisser! 
Nee, Spaß.

Im Ernst:
Danke für den Tipp.

Hab aber auch noch eine Frage dazu:
Gibt es so was ähnlich auch für Oracle (>=8.1.7)?


----------



## Thomas Darimont (11. August 2005)

Hallo!

 Unter Oracle kannst du die Ergebnissmenge wie folgt begrenzen:

```
SELECT foo,bar FROM fart where ROWNUM < 11;
```
 So werden die ersten 10(?) Zeilen ausgegeben.

 Gruß tom


----------



## chironex (11. August 2005)

lässig, in Oracle wusste ichs nicht ;-)


----------



## jentzschi (11. August 2005)

Gibt den in MSSQL auch die Möglichkeit die Ergebnismenge so zu begrenzen, dass man z.B. nur die Zeilen 10-20 ausgibt.

Wäre schön, wenn ihr da ne SQL Lösung für dieses Problem habt.


[ Wink zu MSSQL: "... LIMIT 10,10" ]


----------



## chironex (11. August 2005)

So könntest Du es machen:


```
select top 10 * from
	(select top 20 * from mytable order by mykeycol asc) as temp
order by mykeycol desc
```

Wichtig sind die beiden gegenläufigen Sortierungen.

Ohne Sortierungen würde ich das "top" aber generell nicht verwenden. SQL arbeitet ja mengenorientiert und in Mengen ist die Position eines Elements ja ohne Bedeutung. Ohne Sortierung kannst Du Dir also nicht sicher sein, dass Deine Daten immer in der gleichen Reihenfolge daherkommen (auch wenns meistens so ist *gg*).


----------



## jentzschi (11. August 2005)

Macht mich nicht so richtig glücklich, weil ich es dann nochmal gegensortierne müsste...

Hab vieleicht noch ne Idee, glaube sowas in der Art gibts in MSSQL...

SELECT top 20 FROM tabelle ORDER BY X
*is not a result of*
           SELECT top 10 FROM tabelle ORDER BY X;


Mir gehts um das fettgeschriebene, weiss einer, ob es sowas gibts?


----------



## andi_g69 (11. August 2005)

Angenommen in Deiner Tabelle gibt es eine Spalte PK, die - wie ungewöhnlich - der Primary Key ist:

Select Top 10 * From Tabelle Where PK NOT IN (
Select Top 10 PK From Tabelle Order By X)
Order By X


----------



## jentzschi (11. August 2005)

Suppa, damit sollte es funktionieren

Dickes Danke


----------

