J'ai 2 tables que j'essaye de extraire des informations. Il s'agit d'un échantillon des tables ci-dessous car ce sont de grandes tables. Je veux que la description de la table 1 soit sur une colonne Key_Event en regardant dans le tableau 2 et la seule colonne commune est une colonne d'application. Mais l'erreur a vécu que la sous-requête ne peut pas retourner plus d'une ligne.
SELECT SELECT NVL(TO_CHAR(TRANS.ID), 'NULL') AS ID
, 'HEADER'
,NVL(TO_CHAR((SELECT L_APP.DESCRIPTION
FROM L_APP L_APP
WHERE EXISTS ( SELECT 1 FROM TRANS WHERE L_APP.APP = TRANS.APP AND LANGUAGE = 2
)
)), 'NULL') AS KEY_EVENT
3 Réponses :
Vous devez utiliser une agrégation pour combiner des rangées. Vous ne pouvez pas montrer toutes les lignes dans une cellule. Ainsi, Listagg est ce que vous recherchez pour concentrer des chaînes.
Voici un exemple de requête: P>
SELECT
NVL(TO_CHAR(TRANS.ID), 'NULL') AS ID,
'HEADER',
NVL(
TO_CHAR(
(
SELECT LISTAGG ( L_APP.DESCRIPTION ,',' )
FROM L_APP
WHERE EXISTS (
SELECT 1
FROM TRANS
WHERE L_APP.APP = TRANS.APP AND LANGUAGE = 2
)
)
), 'NULL'
) AS KEY_EVENT
Merci. mais je reçois cette erreur "Missing% de mot clé" de la ligne 8 qui est de l_app
De ce que j'ai compris, vous avez besoin d'une description en anglais ( ressemble à langue = 2 code>) comme colonne key_event code> et une liste de toutes les descriptions existantes dans d'autres langues. S'il vous plaît regarder cette syntaxe. J'ai également joint une démo qui montre comment cette requête fonctionne avec des données que vous avez fournies. 12 code> et 27 < / Code> sont également des descriptions anglaises, si vous souhaitez les utiliser (au cas où 2 code> est absent) exécutez ceci: p>
Merci réfléchir. J'utilise le premier. La requête dit que j'ai de nombreuses valeurs dans cette ligne Listagg (description, ',') au sein du groupe (commander par t1.Language) liste
Si vous voulez dire résultat de la concaténation à chaîne, c'est trop long i> Vous ne pouvez pas utiliser listagg () code> ou vous devez utiliser l'une des solutions de Cet article .
Poudre, ce n'est pas le résultat d'une concaténation à la chaîne. La ligne est en train de se plaindre de trop de valeurs est NVL (max (cas lorsque la langue = 2 puis description finale), 'null') key_event,
Désolé, mais je ne comprends pas. Je vous ai montré une solution, je vous ai montré Travailler B> dbfiddle avec vos propres données. Veuillez lire Comment créer un exemple minimal, complet et vérifiable .
Cela fonctionne, mais crée duplicata et ne pouvait également pas s'intégrer facilement avec un autre code que j'ai
J'ai pu utiliser cette réponse dans cette page et ITT n'a créé aucun duplicata pendant la concaténation dans la concaténation dans l'une des archives:
sous-requier eror et trop de valeurs utilisant xmllagg p>
le code final est p>
Une lecture de la question plusieurs fois mais je ne peux toujours pas comprendre ce que vous voulez réellement. Pourriez-vous ajouter l'entrée et la sortie souhaitée correspondante?
Je veux obtenir une description de valeur basée sur l'application de colonne commune