J'ai une table comme ci-dessous. Giviverid et Takerid sont à la fois des clés étrangères d'une autre table, disent la table de la personne. Giviverid et Takerid ne seront pas les mêmes dans une rangée.
PersonID TotalAmount 1 100 2 200 3 -300
3 Réponses :
Essayez ceci- sortie est - p>
1 100 2 200 3 -300
Si vous vouliez tous les gens em> - pas seulement ceux qui sont dans la table - alors vous pouvez essayer: select p.*,
(select sum(case when p.PersonId = t.GiverPersonID then t.amount else - t.amount end)
from t
where p.PersonId in (t.GiverPersonID, t.takerPersonID)
) as net_amount
from persons;
Votre question est trop difficile
Est-ce que ce résultat souhaité correspondre vraiment aux données de la table d'échantillons? Décrivez comment vous calculez chaque valeur totaleTamount.