You can use the following query:
SELECT @v1 = MAX(CASE WHEN rn = 1 THEN CustId END), @v2 = MAX(CASE WHEN rn = 2 THEN CustId END), @v3 = MAX(CASE WHEN rn = 3 THEN CustId END), @v4 = MAX(CASE WHEN rn = 4 THEN CustId END), @v5 = MAX(CASE WHEN rn = 5 THEN CustId END) FROM ( SELECT CustId, ROW_NUMBER() OVER (ORDER BY CustId) AS rn FROM mytable ) t
Using ROW_NUMBER , you assign a separate number to each record in your table. Then, using conditional aggregates in an external query, you can use this number to set each individual variable.
If the number of rows is less than 5, the corresponding variables will be set to NULL .
SQL Fiddle Demo
Giorgos betsos
source share