Sql Server Ordinamento

giovedì 03 marzo 2011 - 15.24

nandonando Profilo | Senior Member

Ho questa query che ordina dal prezzo più piccolo a più grande:
SELECT URL,DESC_TIPO_LOCALE,DESC_Prezzo,DESC_SOTTO_ZONA,NOME,FOTO_MINIATURA,id,DESC_TIP_CIBO2 FROM VW_RISTORANTI where (DESC_TIP_CIBO2 like'Mediterranei') ORDER BY DESC_Prezzo

però ho un orblema alcune volte il campo prezzo non è compilato ed essendo nullo va per primo come posso fare a farlo andare invece sempre alla fine del mio ordinamento?
http://www.gustoroma.it

dinoxet Profilo | Senior Member

prova così :
SELECT URL,DESC_TIPO_LOCALE,ISNULL(DESC_Prezzo, 9999999999999999) AS PREZZO,DESC_SOTTO_ZONA,NOME,FOTO_MINIATURA,id,DESC_TIP_CIBO2 FROM VW_RISTORANTI where (DESC_TIP_CIBO2 like'Mediterranei') ORDER BY ISNULL(DESC_Prezzo, 9999999999999999) AS PREZZO


CON LA FUNZIONE ISNULL PUOI ASSEGNARE UN DETERMINATO VALORE SE LA VARIABILE è NULL

FAMMI SAPERE.


DINOXET
__________________________________________
impossible is only a word

nandonando Profilo | Senior Member

Cosi ordina ma mi cambia anche il prezzo che mette 99999 ma forse riesco a risolvere, comunque grazie
http://www.gustoroma.it

lbenaglia Profilo | Guru

>Cosi ordina ma mi cambia anche il prezzo che mette 99999 ma forse
>riesco a risolvere, comunque grazie
Basta togliere la ISNULL dalla select list lasciandola solo nella clausola ORDER BY.
Tieni presente che una soluzione del genere produrrà un pessimo piano di esecuzione dato che la funzione ISNULL verrà valutata per ogni riga della tabella.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
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