mysql sélectionnez cas de plusieurs colonnes
Je veux mettre plusieurs champs avec quelque chose comme ça, comment puis-je le faire fonctionner?
Select TableId,
CASE
WHEN StartTime > Appt THEN
Field AS Field_1
FieldId AS FieldId_1
WHEN StartTime BETWEEN Appt AND DATE_ADD(Appt, INTERVAL 1 MONTH) THEN
Field AS Field_2
FieldId AS FieldId_2
END
FROM TableA;
Ça ne fonctionne pas, la syntaxe est incorrecte, près Champ_1.
- Vous n'avez pas dit ce qui est mauvais avec ce que vous avez fait
- Et où sont vos
SET
déclaration? - Est votre intention que votre cas de déclaration de produire deux champs supplémentaires ou quatre champs supplémentaires? Vous avez quatre noms différents produits.
- Voulez 2 champs, ne veulent pas d'évaluer l'état de chaque champ, serait plutôt de faire de l'état une fois, puis l'appliquer à de nombreux domaines.
- Pouvez-vous expliquer plus en détail ce que vous voulez accomplir? Il semble que vous voulez modifier l'alias de colonne de données choisie. Ce n'est pas possible parce que pas toutes les lignes de satisfaire les mêmes conditions dans le
CASE
déclaration. Le résultat de la requête est juste un alias de colonne nom de chaque colonne pour toutes les lignes.
Vous devez vous connecter pour publier un commentaire.
Vous essayez d'exécuter quelque chose de similaire expansion de macro dans une instruction SQL, vous ne pouvez pas le faire. La façon la plus simple de résoudre votre problème est d'écrire du SQL dynamique dans le code de votre application, et d'exécuter cette instruction conditionnelle à partir de l'application.
Si vous devez le faire au sein de SQL, vous avez quelques options.
Chaque
CASE
est une expression unique, de sorte que vous pouvez seulement de produire des champs de sortie individuellement, en ayant unCASE
pour chaque colonne:Vous pouvez également utiliser le formulaire de déclaration de
CAS
(ouIF
, qui pourrait être plus simple) à l'intérieur d'une procédure stockée, pour contenir plusieurs versions de votre déclaration et de les exécuter conditionnellement.Qui est complètement dépassé
case
de la syntaxe. Si tout ce que vous avez à faire est de changer l'alias de ces champs, puis de faire de la transformation de votre client.par exemple
Vous sont proches, il semble que ce
Je ne sais pas ce qui est
field_XXXX
contenu,Mais je peux le faire fonctionner avec la réutilisation de l'interrupteur de cas à partir de la requête comme ceci :
(j'utilise ici
temporary variable
)peut-être ce que vous voulez dire.
modifier l'ordre de votre champ de sélection,
parce que l'affaire devrait être la première colonne à être récupérée à l'aide d'alias dans mysql
le code doit être comme suit