Compare to MS Access Jet Engine SQL, T-SQL's ORDER BY clause is flexible, which can point either the column name or alias of the column. Which special function can be used for special purpose. Here is any example. Let us say, you need a data set in order:
SELECT DISTINCT Name
FROM Tab
ORDER BY Name
Then you need to add a record called "Unknown" at the top:
SELECT 'Unknown' AS Name
UNION
SELECT DISTINCT Name
FROM Tab
There is problem, you won't able to add ORDER BY clause in T-SQL because you used UNION. Following is next step:
SELECT Name
FROM
( SELECT 'Unknown' AS Name
UNION
SELECT DISTINCT Name
FROM Tab
) AS Inner_Q
ORDER BY Name
You won't be able to get the right result, because "Unknown" is not on the top. Solution is:
SELECT CASE WHEN Name = '0000' THEN 'Unknown' ELSE Name END AS New_Name
FROM
( SELECT '0000' AS Name
UNION
SELECT DISTINCT Name
FROM Tab
) AS Inner_Q
ORDER BY Name
Why use '0000'? Because it would be on the top after sort. In this case, if you use
ORDER BY New_Name
it won't work.
http://koncordpartners.blogspot.com/2009/11/contain-data-layout-in-sql-part-for.html
No comments:
Post a Comment