-2
votes

SQL Query maintenue l'équilibre

J'ai une table avec des colonnes

ID client, ID de compte, date de transaction, solde

Je voudrais interroger la table et obtenir tous les comptes contenus 500 $ dans un mois donné et pour tout le mois. Si le compte a maintenu un équilibre pour 500 $ pour le mois entier, sauf un jour, cela le disqualifierait.

Comment puis-je interroger la table?


3 commentaires

Les échantillons de données et les résultats attendus seraient super ici


Et montrer ce que vous avez essayé jusqu'à présent, c'est aussi une sorte de norme ici.


Vous voulez donc tous les comptes que ne avez-vous que Ballance groupé par mois?


3 Réponses :


0
votes

Obtenir Tout les valeurs d'équilibre et les comparez à 500: xxx

voir le Démo .


1 commentaires

Je me demande ce qui se passe s'il n'y a aucune transaction dans le mois, mais le dernier mois précédent le solde de clôture était de 500



0
votes

Tout d'abord, votre table est remplie de trop d'informations. Je vous suggère de créer trois tables, une pour les clients, une pour les comptes et une pour les transactions: xxx

de cette façon, vous pouvez réellement réserver et venir. Maintenant, vous avez besoin d'une table supplémentaire où vous pouvez réellement stocker la balance de chaque compte pour chaque jour: xxx

Vous allez devoir écrire les soldes chaque jour mais. Cela pourrait ressembler à quelque chose comme ceci: xxx

il suffit de fonctionner quotidiennement avec le planificateur de tâches de Windows et PowerShell.

alors vous pouvez créer votre requête pour obtenir toutes ces valeurs xxx


0 commentaires

0
votes

Vous voulez regarder un mois, dites janvier 2019. Vous souhaitez trouver tous les comptes qui ne sont pas passés de moins de 500 $ dans ce mois-ci.

Pour cela, nous devons d'abord trouver la valeur initiale. S'il y a une entrée du 1er janvier, nous allons bien, sinon nous devons regarder la dernière date de la dernière date. Donc, c'est la date maximale avant le 2 janvier que nous recherchons. P>

select account_id
from transactions t1
where transaction_date >=
(
  select max(t2.transaction_date)
  from transactions t2
  where t2.account_id = t1.account_id
  and t2.transaction_date < '20190102'
)
and transaction_date < '20190201'
group by account_id
having min(transaction_date) >= 500;


0 commentaires