2012-04-20 12 views
6

Mam bardzo prosty wymóg.Dodaj górny pojedynczy wiersz do uporządkowanego wyniku Zestaw zapytania

SELECT NULL as ProjectId, 'All' as ProjectName 

UNION 

(
    SELECT Project.ProjectId, Project.ProjectName 
    FROM Project Order by 2 
) 

oryginalnej kolejności wpisów:

ProjectId  ProjectName  
24    Beta   
56    Alpha   
57    Gamma   
120    Aap    

oczekiwany wynik SET:

ProjectId  ProjectName   
______________________________ 
NULL   All     
120   Aap     
56    Alpha    
24    Beta     
57    Gamma    

czego potrzebuję: Chcę dodać jeden wiersz na górze uporządkowanego zbioru wyniku zapytanie

Problemy:

  1. Subquerys nie mogą mieć klauzuli ORDER BY
  2. Doing Top 100 Percent niszczy porządek, a rząd mający 'All' nie wchodzi na górę
  3. Deklarując zmienną Tabela włożeniem wszystkie wpisy w kolejności i następnie wykonując unii na tym stole tj

    Select NULL as ProjectId, 'All' as ProjectName... 
        UNION 
    select * from @myTable 
    

    ponownie niszczy kolejność

mi pomóc proszę

Odpowiedz

7

można zamówić wynik unii, ale trzeba zapewnić dodatkową kolumnę, aby określić, gdzie dane pochodzą z - tutaj jest SortOrder:

SELECT NULL as ProjectId, 'All' as ProjectName, 1 SortOrder 
UNION ALL 
SELECT Project.ProjectId, Project.ProjectName, 2 SortOrder 
FROM Project 
order by SortOrder, ProjectName 

Uwaga Wymieniłem jedności z UNION ALL jak ty nie trzeba ODRZUCIĆ zestaw wyników.

+0

haha..wow..buto ... dziękuję bardzo –