Solved

Sql Query using except order by

Posted on 2009-04-12
8
1,927 Views
Last Modified: 2013-12-07
Hi ,

I am using Sql Server 2005

What I want is I am having two queries
I want to retrieve the links other than first 15.

Total links - first 15 links. I want to use order by in both the queries.
Order by not working with except.

thanks


select * from Links order by DateStamp asc

except

select top 15 * from Links order by DateStamp asc

Open in new window

0
Comment
Question by:Saroj13
8 Comments
 
LVL 39

Expert Comment

by:appari
ID: 24127481
try this


Select * from (select top 100 percent * from Links order by DateStamp asc) A
except
Select * from (select  top 15 * from Links order by DateStamp asc) A
order by DateStamp asc
0
 
LVL 25

Expert Comment

by:lwadwell
ID: 24127492
Hi Saroj13,

The order by would be applied to each SQL prior to the except - after the except the order can be different.  To get the order you want you should do an order by on the result , i.e. SELECT * FROM (your query) as v ORDER BY DateStamp asc.  In this case the ORDER BY in your top SQL may be unnecessary.

lwadwell
0
 

Author Comment

by:Saroj13
ID: 24127647
Hi lwadwell:,

I need order by in both the queries.

What I want is . I want all the data according to date.
Then i want top 15 from this all data. Then I want to subtract it.

Thanks
0
 
LVL 25

Expert Comment

by:lwadwell
ID: 24127664
Saroj13,

I understand that you need the ORDER BY for the TOP 15 ... that is fine.  The EXCEPT returns those rows from the top query not returned from the bottom query - it does not need the top query to be sorted (it will do that itself).  I was suggesting:

SELECT * FROM (
select * from Links
except
select top 15 * from Links order by DateStamp asc
) as v ORDER BY DateStamp asc

lwadwell
0
Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

 
LVL 40

Accepted Solution

by:
Sharath earned 500 total points
ID: 24127715

There are various ways of doing this. You can try appari post. You can also try like this.
SELECT *
  FROM Links
 WHERE NOT EXISTS (SELECT TOP 15 * FROM Links ORDER BY DateStamp DESC)
 
Or like this
SELECT *
  FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY DateStamp DESC) AS RN FROM Links) T1
 WHERE T1.RN > 16
0
 
LVL 2

Expert Comment

by:TejasShahMscIT
ID: 24128125
Hi,

Try this:


SELECT * 

FROM (

select * from Links 

except

select top 15 * from Links order by DateStamp asc

) x 

ORDER BY order by DateStamp asc
 

Thanks,

Tejas

Open in new window

0
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 24128634
this would do also:
select * from Links 
where primary_key_field not in (  select top 15 primary_key_field from Links order by DateStamp asc )
order by DateStamp asc

Open in new window

0
 
LVL 3

Expert Comment

by:servicegroup
ID: 24196513
I just stumbed upon something while trying to fix a similar problem.  You can order by SQL's name for this field.  In my case I had, SELECT field1 AS field1, field2 AS field2...Except...

I ordered by 00004 (the 4th field) at the end of the statement.

I hope this helps someone
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you find yourself in this situation “I have used SELECT DISTINCT but I’m getting duplicates” then I'm sorry to say you are using the wrong SQL technique as it only does one thing which is: produces whole rows that are unique. If the results you a…
Use this article to create a batch file to backup a Microsoft SQL Server database to a Windows folder.  The folder can be on the local hard drive or on a network share.  This batch file will query the SQL server to get the current date & time and wi…
This video shows how to copy a database user from one database to another user DBMS_METADATA.  It also shows how to copy a user's permissions and discusses password hash differences between Oracle 10g and 11g.
This video explains at a high level about the four available data types in Oracle and how dates can be manipulated by the user to get data into and out of the database.

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

25 Experts available now in Live!

Get 1:1 Help Now