Question

Je travaille sur une application ASP.NET qui est censé données du détecteur de sortie pour une inter-choisie, triées par marqueur de mile. Nous avons déterminé la meilleure façon de le faire serait le tri par la longitude (Ouest et Est) ou latitude (Nord et Sud) en fonction de quelle direction il va. Voici la requête qui le remplit.

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 vue NomSite a des annonces telles que «I-64 WB MP à 3,1. Les ListItems auxquels ils ont accès sont répertoriés comme « I-64 ».

Il y a 4 différentes autoroutes, et il fonctionne très bien pour tout sauf un, I-55/70. Lorsque cette option est choisie, la liste ne sont pas triées par la latitude ou la longitude, mais simplement par l'ordre qu'ils sont dans le tableau. I-55/70 est le seul avec / en elle. Est-ce que cela affecte les choses?

Je vous remercie à l'avance.

Edit: Ce sont répertoriés dans l'élément de liste comme « I-55/70 WB » et ainsi de suite dans le même style que l'exemple ci-dessus. Désolé de la confusion.

Edit2: Cela a fait l'affaire. Merci!

Était-ce utile?

La solution

Il me semble que votre clause ORDER BY ne devrait pas travailler dans tous les cas parce que « @WebName CASE QUAND « % EB% » », etc. ne doit pas être évaluée à true. La déclaration de cas que vous utilisez ne une comparaison d'équivalence, mais les opérateurs génériques ( « % ») ne sont utilisés que pour LIKE. Essayez ceci:

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 barre ne devrait pas affecter quoi que ce soit.

Autres conseils

I-55/70 correspond à aucun des '%EB%, '%WB%', '%NB%' ou '%SB%'.

Votre clause ORDER BY est toujours NULL dans ce cas.

Dans quel domaine voulez-vous trier lorsque le WebName est I-55/70?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top