Rechercher : dans
Par :

Soustraction en SQL ?

Dernière réponse le 10 déc 2008 à 17:31:40 julaf_canada, le 1 déc 2008 à 19:25:38 
 Signaler ce message aux modérateurs

Bonjour,

J'ai essaye de chercher dans beaucoup de posts present la solution, mais je reste sans reponses...
Je fais une requete qui me retourne quelque chose du genre :

NOM ID ChargeType Amount
----------------------------------------------------
A 54031 0 5
A 54031 1 2
B 54032 0 6
B 54032 1 5
...

Je voudrais obtenir quelque chose du genre

A 3 (soit ID2-ID1)
B 1 (soit ID4-ID3)
...

Savez-vous quelle est la meilleure solution ?

Je pensais que AND NOT dans la clause WHERE aurait suffit, mais visiblement il ne soustrait pas.

J'ai egalement fait un DECLARE @sum1, DECLARE @sum2... bla bla bla
et a la fin un select @sum1-@sum2 ; le probleme est que pour ca je dois integrer dans le WHERE ID = '54031', mais je veux que le traitement se fasse automatiquement.

Merci d'avance.

Configuration: Windows Vista
Internet Explorer 7.0

Meilleures réponses pour « Soustraction en SQL ? » dans :
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
Gestion des paramètres SQL VoirSQL présente un certain nombre de paramètres au niveau d'Oracle qu'il est possible de visualiser à travers la commande : SHOW ALL Pour modifier la valeur d'un paramètre il suffit d'utiliser la commande : SET NOM_PARAM VALEUR
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...

1

sandul, le 1 déc 2008 à 19:41:29

Salut,

Si je comprends bien, il y a toujours des paires de valeurs; du coup, j'essairerais ceci:

SELECT r1.nom, r1.id, r1.chargeType, r2.amount - r1.amount
FROM ta_requête_qui retourne_les_rows_en_question r1, ta_requête_qui retourne_les_rows_en_question r2
WHERE r1.id = r2.id AND r2.amount > r1.amount


Requête avec syntaxe Oracle mais facilement adaptable à d'autres bases (utiliser inner join).

++

Répondre à sandul

2

julaf_canada, le 1 déc 2008 à 22:33:17

Beh c'est un peu l'idee, le probleme, c'est qu'avec cette requete, ca me retourne quelque chose du genre
a amount(a)
b amount(a)
c amount(a)
...
a amount(b)
b amoun(b)
...

ou alors j'ai manque un truc dans la syntaxe. :S

Répondre à julaf_canada

3

julaf_canada, le 1 déc 2008 à 23:02:15

Mon erreur etait au niveau des jointures dans le second WHERE general.
Seul soucis, c'est que parfois je peut avoir un ID sans differente charge Type
Exemple

NOM ID ChargeType Amount
----------------------------------------------------
A 54031 0 5
A 54031 1 2
B 54032 0 6
B 54032 1 5
C 54033 0 8
D 54034 0 7
...

mon resultat doit alors etre
A 3 (soit ID2-ID1)
B 1 (soit ID4-ID3)
C 8
D 7
...

Répondre à julaf_canada

4

 julaf_canada, le 10 déc 2008 à 17:31:40

Un petit up,
Avez vous une idee de comment faire pour soustraire 2 valeurs lorsque la requete retourne deux valeurs pour un ID, mais garder la valeur retournee si elle est unique.

NOM ID ChargeType Amount
----------------------------------------------------
A 54031 0 5
A 54031 1 2
...
C 54033 0 8

Expected Result:
A 3
C 8

Merci

Répondre à julaf_canada