Ordinare risultati con spazi vuoti alla fine

lunedì 13 febbraio 2012 - 23.04
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  SQL Server 2008 R2  |  SQL Server 2008  |  SQL Server Express

nikkysixx Profilo | Junior Member

Ciao,ho una domanda .Avendo una query di estrazione dati, ordinata in ordine ascendente per nome ad esempio ,ottengo come ordinamento prima i risultati vuoti (campi dato di tipo string "") e poi i dati che cominciano per A fino alla Z

Come devo modificare la query in maniera da mettere gli spazi vuoti dopo la Z ??

Grazie!

p.s. non devo eliminare gli spazi vuoti,ma solo metterli dopo l ultima lettera dell alfabeto

Qui sotto c è la query esatta che dovrei modificare

"select ROW_NUMBER()over (order by nome) as 'Numero',*
FROM ((select distinct nome,email) INTERSECT select (distinct nome,email)) as elenco_numerico"

alx_81 Profilo | Guru

>Ciao,ho una domanda .Avendo una query di estrazione dati, ordinata
>in ordine ascendente per nome ad esempio ,ottengo come ordinamento
>prima i risultati vuoti (campi dato di tipo string "") e poi
>i dati che cominciano per A fino alla Z
>Come devo modificare la query in maniera da mettere gli spazi
>vuoti dopo la Z ??
ma l'order by è quello della row number o quello che vuoi ottenere nel resultset? sono due cose diverse..


>Grazie!
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

nikkysixx Profilo | Junior Member

no l order by è quello che vorrei ottenere dal result set, la row number semplicemente mi assegna un valore numerico crescente


es.il risultato desiderato sarebbe
1 aadsdasd
2 bbbbbb
3 cccccc
4 ""
5 ""

invece ora ottengo
1. ""
2. ""
3. aadsdasd
4. bbbbbb
5. cccccc

alx_81 Profilo | Guru

>no l order by è quello che vorrei ottenere dal result set, la
>row number semplicemente mi assegna un valore numerico crescente
ok, allora manca
se vuoi mettere le stringhe vuote in fondo fai come nel seguente esempio:

USE tempdb; GO CREATE TABLE #Foo ( IDFoo int NOT NULL PRIMARY KEY CLUSTERED , FooData char(1) NOT NULL ) GO INSERT INTO #Foo (IDFoo, FooData) VALUES (1, '' ); INSERT INTO #Foo (IDFoo, FooData) VALUES (2, '' ); INSERT INTO #Foo (IDFoo, FooData) VALUES (3, 'D' ); INSERT INTO #Foo (IDFoo, FooData) VALUES (4, 'A' ); INSERT INTO #Foo (IDFoo, FooData) VALUES (5, 'C' ); GO -- order by normale SELECT IDFoo , FooData FROM #Foo ORDER BY FooData GO -- order by case SELECT IDFoo , FooData FROM #Foo ORDER BY CASE WHEN LTRIM(RTRIM(FooData)) = '' THEN 'Z' -- max value (per farlo finire in fondo) ELSE FooData END GO DROP TABLE #Foo; GO
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5