2012-04-20 14 views
6

Ho un requisito molto semplice.Aggiungere una riga singola in cima al risultato ordinato Set di una query

SELECT NULL as ProjectId, 'All' as ProjectName 

UNION 

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

ordine originale delle voci:

ProjectId  ProjectName  
24    Beta   
56    Alpha   
57    Gamma   
120    Aap    

ATTESO set di risultati:

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

cosa ho bisogno: Voglio aggiungere una singola riga in cima al set di risultati ordinata di un query

Problemi:

  1. Subquerys non è consentito avere scegliere per clausola
  2. Facendo Top 100 Percent distrugge l'ordine, e la fila avendo 'All' non arriva in alto
  3. Dichiarazione di variabile Tabella inserendo tutte le voci in ordine e poi eseguire l'unione di questa tabella cioè

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

    distrugge nuovamente l'ordine

Help me please

risposta

7

È possibile ordinare risultato di UNION, ma è necessario fornire colonna aggiuntiva per identificare dove i dati provenienti da - qui è 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 

Nota ho sostituito UNION con UNION ALL come si non è necessario impostare i risultati DISTINCT.

+0

haha..wow..bingo ... grazie mille –

Problemi correlati