0
votes

Sommation de toutes les valeurs - / + d'une colonne d'une année spécifique

J'ai rejoint 2 tables. Une table contient toutes les valeurs (+/- quantités) et l'autre dispose principalement de données dimensionnelles. Une fois rejoints, je voulais organiser une requête en une somme de toutes les valeurs négatives et positives, étant donné une année spécifique.

problème semble se produire sur la troisième ligne. Toute pensée? xxx

La requête ne génère pas en raison d'une erreur étant jetée à la ligne 3:

erreur - ORA-00905: Mot-clé manquant 00905. 00000 - "Mot-clé manquant"


8 commentaires

problème semble se produire ... quel problème?


Problème - La requête ne générant pas en raison d'une erreur étant jetée sur la ligne 3


Si vous obtenez une erreur, veuillez partager le message d'erreur.


rejoindre , pas joint .


L'erreur démarre sur la dernière ligne (où année = 2019;) J'ai essayé d'ajouter / supprimer des apostrophes et rien encore.


la requête ne générant pas en raison d'une erreur ... quelle erreur? Veuillez fournir un message spécifique.


Erreur - ORA-00905: Mot-clé manquant 00905. 00000 - "Mot-clé manquant" / it itemming de la dernière ligne (où Sales_Amount .... //)


Je ne sais pas pourquoi le vote sur le bas s'est passé. Aurait pu être la question rudimentaire ou la structure appropriée de poser une question et de placer le message d'erreur. Quoi qu'il en soit, merci à tout le monde de votre aide.


3 Réponses :


0
votes

Utilisez simplement l'agrégation conditionnelle:

select sum(case when sales_amount < 0 then sales_amount end) as neg_sum,
       sum(case when sales_amount > 0 then sales_amount end) as pos_sum          
from salesInfo s inner join
     dimInfo d
     on ? = ?  -- whatever your `JOIN` conditions are here
where year = 2019;


2 commentaires

@ dreweezy, faire un autre essai maintenant!


Salut jarlh - oui j'ai utilisé rejoindre et non conjoint XD. J'ai essayé cela à nouveau et l'erreur se déplace sur la dernière ligne (où année = 2019;) J'ai essayé d'ajouter / supprimer des apostrophes et toujours pas de chance.



1
votes

Ajoutez une clause ON après la déclaration de jointure pour spécifier la condition de jointure xxx


1 commentaires

Génial, cela l'a fait aussi. Merci pour ton aide!



1
votes

problème est probablement due à la clause MANDS> ON QUI dans Oracle SQL n'est pas autorisé pour JOIN INTERNION Contrairement à d'autres dialectes de base de données, qui traite une telle jointure équivalente à une jointure croisée .

Alternativement, vous pouvez utiliser l'oracle Natural Joindre pour rejoindre la correspondance des colonnes nommées entre tableaux: xxx

de toute façon, vous pouvez ensuite exécuter un Agrégats conditionnels et même groupe par année : xxx

Démo de réxicité


1 commentaires

Merci ça l'a fait. Très appréciée. C'était la clause sur laquelle vous l'avez mentionné.