dans le serveur SQL, devez sélectionner l'une des deux colonnes, peut une déclaration de cas faire?

StackOverflow https://stackoverflow.com/questions/1691690

Question

Mon tableau:

Les utilisateurs (ID utilisateur, col1, col2)

Je veux faire une procédure générique stockée, mais je dois retourner soit col1 ou col2 dans une requête.

déclaration Puis-je affaire gérer cette situation?

SELECT userID, col1 Des utilisateurs

ou

SELECT userID, col2 Des utilisateurs

Était-ce utile?

La solution

Utilisation CASE:

SELECT t.userid,
       CASE
         WHEN [something to evaluate why to show col1 vs col2 ] THEN
           t.col1
         ELSE
           t.col2
       END
  FROM USERS t

Utilisation COALESCE:

SELECT t.userid,
       COALESCE(t.col1, t.col2)
  FROM USERS t

COALESCE renvoie la première valeur de colonne qui est non nulle, à partir de la gauche.

Autres conseils

Oui, tant que vous ne me dérange pas de retourner les mêmes noms de colonnes:

SELECT userID, ArbitraryCol = CASE WHEN @param = 1 then col1 ELSE col2 END
FROM Users

Si vous avez besoin des en-têtes de colonnes pour changer, vous devez utiliser l'instruction IF

IF @param = 1
BEGIN
SELECT userID, col1 FROM Users
END
ELSE
BEGIN
SELECT userID, col2 FROM Users
END

Je pense que quelque chose comme SQL Server 2000/2005 cela.

select
   UserID,
   case UserID
      when 1 then Col1
      when 2 then Col2
      else 'boo'
   end as SpecialSituation
from
   Users

Il peut, en supposant que vous avez une expression logique pour le moment de revenir col1 au lieu de col2:

SELECT USERID CASE WHEN USERTYPE='X' THEN COL1 ELSE COL2 END FROM USERS

Si col1 et col2 sont de différents types, vous devez utiliser CAST ou CONVERT pour convertir un à l'autre.

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