Lorsque la table de retrait n'a pas de données i crée une table virtuelle
et faire [N ° de compte: 100.200.330.444] code> et le tableau de dépôt Aucune donnée [N ° de compte: 100.200.330.444] code>, alors ne montre que Null code>.
Mais je veux montrer 0 code>. Balance principale code> [N ° de compte: 100.200.330.444] code>
Mon code comme bistry_amount - Retir_amount = résultat code>
Lors du retrait de la table vide, puis de commentaires null code>
Je veux montrer MAIN_BALANCE = 0 P> CREATE VIEW xyz as select account_no as account_no,
CASE
when sum(deposit_amount)=null then 0
when sum(deposit_amount)=0 then 0
ELSE sum(deposit_amount)
END
-
(select
CASE
when sum(withdraw_amount)=null then 0
when sum(withdraw_amount)=0 then 0
ELSE sum(withdraw_amount)
END
from withdraws
)as balance from deposits group by account_no
3 Réponses :
Vous ne pouvez pas utiliser des opérateurs arithmétiques sur un champ NULL. Null est Si vous voulez vérifier NULLS, vous pouvez utiliser P>
inconnu code> d'où x = inconnu code> est toujours inconnu. P>
isnull: i.e. isnull (champ) code> li>
est NULL: I.e. Où le champ est NULL; CODE> LI>
coalesce: c'est-à-dire coalesce (champ, valorisation) code> li>
ol>
Je pense que vous devriez écrire cette requête en tant que Notez que je suppose que chaque compte a au moins un dépôt (à Ouvrez le compte). Sinon, vous devrez imiter une jointure complète à la place (voir cette question pour comment faire cela). P> p> Joindre code> à la place:
Ceci est presque impossible à exprimer avec précision dans une vue MySQL en raison des limites que MySQL place sur les points de vue. Si vous souhaitez tous les comptes, commencez avec la table de compte et utilisez des sous-requêtes corrélées dans le Sélectionnez CODE>: select a.account_no,
((select coalesce(sum(d.deposit_amount), 0)
from deposits d
where d.account_no = a.account_no
) -
(select coalesce(sum(d.withdraw_amount), 0)
from withdraws w
where w.account_no = a.account_no
)
) as balance
from accounts a;
Il peut être plus simple de changer le schéma afin que ces colonnes de la quantité soient par défaut sur
0 code> plutôt que nullDupliqué possible de Stackoverflow.com/questions/9608639/... < / a>
Dans SQL, nous utilisons normalement
NULL code> oun'est pas NULL code> pour tester les valeurs null.= code> ne testera pas correctement pour NULL car NULL est considéré comme une valeur manquante