Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2000 Forums
 Transact-SQL (2000)
 TOP n (plus one extra)?

Author  Topic 

AskSQLTeam
Ask SQLTeam Question

0 Posts

Posted - 2004-04-20 : 10:04:04
Jerry writes "I'm getting the TOP 25 records -- no problem.
I can get a single record -- no problem.
BUT, I'd like to get the top 25 and ONE EXTRA row (to be a total of 26 records -- or all records in the case where there are 25 or less).
I've tried sub-queries and Union queries but still no luck - the only way I can do this successfully is using 2 different queries and combining the results.

In this example there are 35 records but I want just the latest 25 AND I want an additional one that is not in the top 25. I would always have 25+1 rows returned if it worked right.
Here's a sample of a failed attempt that will never return the lone record:

SELECT TOP 25 FormulaUsage.LotNumber, FormulaUsage.Qty, FormulaUsage.Expire, FormulaUsage.FormulaUsageID, FormulaUsage.FormulaID
From FormulaUsage
Where FormulaUsage.FormulaUsageID<>432
AND FormulaUsage.FormulaID =100
UNION
SELECT FormulaUsage.LotNumber, FormulaUsage.Qty, FormulaUsage.Expire, FormulaUsage.FormulaUsageID, FormulaUsage.FormulaID
From FormulaUsage
WHERE FormulaUsage.FormulaUsageID=432
AND FormulaUsage.FormulaID=100
ORDER BY FormulaUsage.FormulaUsageID DESC

In other words (in this example) "I want the first 25 records AND record 35""

LarsG
Constraint Violating Yak Guru

284 Posts

Posted - 2004-04-20 : 10:36:50
[code]
SELECT TOP 25 FormulaUsage.LotNumber, FormulaUsage.Qty, FormulaUsage.Expire, FormulaUsage.FormulaUsageID, FormulaUsage.FormulaID
From FormulaUsage
Where FormulaUsage.FormulaUsageID<>432
AND FormulaUsage.FormulaID =100
ORDER BY FormulaUsage.FormulaUsageID DESC
UNION all
SELECT FormulaUsage.LotNumber, FormulaUsage.Qty, FormulaUsage.Expire, FormulaUsage.FormulaUsageID, FormulaUsage.FormulaID
From FormulaUsage
WHERE FormulaUsage.FormulaUsageID=432
AND FormulaUsage.FormulaID=100
[/code]
Go to Top of Page
   

- Advertisement -