SI l'énoncé dans la Clause ORDER BY d'une Instruction SELECT dans une Procédure Stockée SQL Server
Je suis en train de créer une procédure stockée qui prend un paramètre de type bit, qui si elle est vraie commandes par une colonne, et si de fausses commandes par une autre colonne. Comment pourrais-je mettre en œuvre cette?
Voici ce que j'ai jusqu'à présent
CREATE PROCEDURE [dbo].[CLICK10_GetCP]
@switch AS BIT
AS
BEGIN
SELECT
acct_nbr,
acct_name
FROM
acct
ORDER BY
END
GO
Vous devez vous connecter pour publier un commentaire.
Une façon grossière:
Vous devez également être en mesure d'utiliser les CAS..QUAND je pense à:
Est une façon de construire la Requête à quelque chose comme ceci:
Je ne suis pas vraiment sûr que vous pouvez? Je finirais par le faire:
J'ai pensé que vous pouviez changer le paramètre de type int, et de les trier par la colonne avec qui ordinale:
Cela jette un joli message d'erreur (SQL2005):
Googler autour trouvé cette solution ici (SQL 2005 et jusqu'):
La plus succincte approche est la suivante:
Cela peut entraîner un mauvais plan d'exécution pour les grandes tables, ou il peut ne pas fonctionner du tout si acc-nbr est un int et acct-nom est un varchar.
Enveloppant les deux requêtes distinctes dans le IF /ELSE peut effectuer nettement mieux pour les plus grands ensembles de données ou d'être la seule approche possible si les types de données des colonnes sont différentes.