Comment Puis-Je Utiliser L'Instruction Case De La Colonne Dans Le Groupe Par
Comme indiqué par la question, je suis en train de formuler une requête qui a une instruction case dans la colonne des résultats, et puis je veux inclure cette colonne dans la requête de l'instruction group by. Pour donner un exemple concret, voici tout petit peu de ce que ma requête ressemble:
SELECT SOME_TABLE_ALIAS.COLUMN1, OTHER_TABLE_ALIAS.COLUMN2,
CASE
WHEN SOME_TABLE_ALIAS.COLUMN3 IS NOT NULL THEN 'A'
ELSE 'B'
END AS CASE_COLUMN
FROM SOME_TABLE SOME_TABLE_ALIAS
... (other table joins and where clauses)
GROUP BY SOME_TABLE_ALIAS.COLUMN1, OTHER_TABLE_ALIAS.COLUMN2, CASE_COLUMN
Avant de venir ici, j'ai regardé un peu les sites web, y compris cette une, pour essayer de résoudre mon problème. J'ai essayé d'ajouter un alias après la CASE
un mot clé comme est indiqué dans la page web, mais n'ont eu aucune chance. Le message d'erreur que je continuerai à recevoir est la suivante:
[Error] Script lines: 127-151 ----------------------
CASE_COLUMN IS NOT VALID IN THE CONTEXT WHERE IT IS USED. SQLCODE=-206, SQLSTATE=42703, DRIVER=3.53.71
Quelqu'un d'autre a couru dans les questions que je suis en face et a été en mesure d'utiliser un GROUP BY
sur les résultats d'une CASE
déclaration? Toute aide serait appréciée. Oh, et le DB2 version est un z/instance de système d'exploitation, la version 10 (DSN10015)
OriginalL'auteur butallmj | 2013-11-27
Vous devez vous connecter pour publier un commentaire.
L'alias n'est pas disponible pour l'utilisation dans le GROUPE, car le GROUPE EN arrive à l'alias n'est pas encore définie:
Vous pouvez contourner ce avec:
Ou utilisez simplement le cas que vous utilisez dans le SÉLECTIONNER dans le GROUPE PAR
FROM some_table as sta
, puis 'sta' serait appelé "nom de corrélation" dans la à PARTIR de la table de référence, plutôt que d'un "alias" nom. Mais cela rappelle, qu'en tant que votre propre réponse montre, la clause from (avec le nom de corrélation) est évalué en premier, avant le GROUP BY.OriginalL'auteur Filipe Silva
Vous pouvez utiliser soit le cas dans le groupe, comme ceci:
ou utiliser une sous-requête comme ceci:
OriginalL'auteur RedFilter