Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
492 views
in Technique[技术] by (71.8m points)

sql server 2005 - Row_Number() with union query

I have an sql query that returns rows from two tables with same column names. I need a row number of all records in a complete result set.

Following is the query

select Id, VersionNumber from documents where id=5 
Union all  
select Id, VersionNumber from versions where id=5
order by VersionNumber desc

How should it be done?

EDIT: And what if I only need to return a row_num where VersionNumber is lets say 5.

question from:https://stackoverflow.com/questions/5190240/row-number-with-union-query

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Try this:

SELECT *, ROW_NUMBER() OVER(ORDER BY Id) ROW_NUM
  FROM (
        select Id, VersionNumber from documents where id=5 
        Union all  
        select Id, VersionNumber from versions where id=5
       ) a
order by VersionNumber desc

TO filter by version number 5 use:

SELECT * 
FROM   (SELECT *, 
               Row_number() OVER(ORDER BY versionnumber DESC, id) row_num 
        FROM   (SELECT id, 
                       versionnumber 
                FROM   documents 
                WHERE  id = 5 
                UNION ALL 
                SELECT id, 
                       versionnumber 
                FROM   versions 
                WHERE  id = 5) a) b 
WHERE  version = 5 

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...