1

Suppose i have a table

id  Values
1   A
2   B
3   C
4   7
5   J
6   K
7   L

Now i want an output like

id  Values
1   A
2   B
3   C
4   J
5   K
6   L
7   7

How this can be achieved ?

Lukasz Szozda
  • 162,964
  • 23
  • 234
  • 275
  • 1
    You can have a look here http://stackoverflow.com/questions/119730/how-do-i-sort-a-varchar-column-in-sql-server-that-contains-numbers – hybrid Sep 11 '15 at 09:27

1 Answers1

0

Generate ROW_NUMBER() with independent sorting on each column using subquery/CTE and join using generated rn:

SqlFiddleDemo

;WITH cte AS
(
  SELECT
   [id],
   rn = ROW_NUMBER() OVER(ORDER BY id)
  FROM tab
)  
,cte2 AS
(
  SELECT
   [values],
   rn = ROW_NUMBER() OVER(ORDER BY CASE
           WHEN  LEFT([values],1) LIKE '%[A-Z]%'
           THEN 1 
           ELSE 2
         END, [values])
  FROM tab
)  

SELECT c1.id, c2.[values]
FROM cte c1
JOIN cte2 c2
  ON c1.rn = c2.rn;
Lukasz Szozda
  • 162,964
  • 23
  • 234
  • 275