Domanda

Sto lavorando a un'applicazione ASP.NET che si suppone che i dati del rivelatore di uscita per un interstatale scelta, ordinati per miglio marcatore. Abbiamo determinato il modo migliore per farlo sarebbe smistamento da longitudine (Est e Ovest) o di latitudine (Nord e Sud), a seconda della direzione in cui va. Ecco la domanda che lo popola.

SELECT [ShortWebID], [AvgSpeed], [update_time], [WebName] FROM [vwAverageSpeed] 

WHERE (([WebName] LIKE '%' + @WebName + '%') AND ([update_time] > @update_time)) 

ORDER BY CASE @WebName WHEN '%EB%'THEN [Longitude] WHEN '%WB%' THEN [Longitude] WHEN '%NB%' THEN [Latitude] WHEN '%SB%' THEN [Latitude] END

La vista WebName ha elenchi diversi, come 'I-64 WB a MP 3.1'. I ListItems cui hanno accesso sono elencati come 'I-64'.

Ci sono 4 autostrade diverse, e sta lavorando bene per tutto, ma uno, I-55/70. Quando questa opzione è selezionata, l'elenco non è ordinato per la latitudine o longitudine, ma invece semplicemente l'ordine che sono nella tabella. I-55/70 è l'unico con un / a esso. Sarebbe questo influenzerà le cose?

Grazie in anticipo.

Modifica: Questi sono elencati nella voce lista come 'I-55/70 WB' e così via nello stesso stile, come nell'esempio precedente. Ci scusiamo per la confusione.

Edit2: Che ha fatto il trucco. Grazie!

È stato utile?

Soluzione

Mi sembra il tuo clausola ORDER BY non dovrebbe funzionare in tutti i casi, perché "CASO QUANDO @WebName '% EB%'", ecc, non dovrebbe valutare a true. La dichiarazione caso, come si utilizza lo fa un confronto di equivalenza, ma gli operatori jolly ( "%") sono utilizzati solo per LIKE. Prova a modificare:

ORDER BY CASE 
WHEN @WebName LIKE '%EB%' THEN [Longitude] 
WHEN @WebName LIKE '%WB%' THEN [Longitude] 
WHEN @WebName LIKE '%NB%' THEN [Latitude] 
WHEN @WebName LIKE '%SB%' THEN [Latitude] 
END

La barra non dovrebbe pregiudicare nulla.

Altri suggerimenti

I-55/70 corrisponde a nessuno dei '%EB%, '%WB%', '%NB%' o '%SB%'.

Il tuo clausola ORDER BY è sempre NULL in quel caso.

Cosa campo vuoi ordinare quando il WebName è I-55/70?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top