>I need to create a cursor that includes 50 records above a certain PK value and 50 records below this PK value. The way I want to do it (I see no other method) is to use TOP and UNION.
>
>Here is what I tried (unsuccessfully though):
>
>
>select TOP 50 * from MyTable where PK_VAL > nVar Order by PK_VAL ;
>UNION ALL ;
>select TOP 50 * from MyTable where PK_VAL < nVar Order by PK_VAL DESC
>
>
>Can anybody see what is wrong with the above syntax?
Only one ORDER BY is allowed per UNION. You can use derived tables to get around it
SELECT * FROM (select TOP 50 * from MyTable where PK_VAL > nVar Order by PK_VAL) dt1 ;
UNION ALL ;
SELECT * FROM (select TOP 50 * from MyTable where PK_VAL < nVar Order by PK_VAL DESC) dt2
--sb--