-1
votes

Feed Back Null Value dans SQL

Lorsque la table de retrait n'a pas de données [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>.

i crée une table virtuelle et faire 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 commentaires

3 Réponses :


0
votes

Vous ne pouvez pas utiliser des opérateurs arithmétiques sur un champ NULL. Null est inconnu d'où x = inconnu est toujours inconnu.

Si vous voulez vérifier NULLS, vous pouvez utiliser

  1. isnull: i.e. isnull (champ)
  2. est NULL: I.e. Où le champ est NULL;
  3. coalesce: c'est-à-dire coalesce (champ, valorisation)

0 commentaires


0
votes

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;


0 commentaires