Je ne pouvais pas penser à un titre assez bon, mais voici ma question.Comparer les valeurs de deux tables différentes et les multiplier
J'ai quelques tables dans une application qui, entre autres choses, va générer une facture mensuelle pour les consommateurs d'un utilitaire d'alimentation. Plus précisément, il y a trois tables impliquées, 1) Tableau de consommation 2) Historique de facturation Tableau 3) Taux Liste Tableau
Il existe différentes dalles de prix par unités consommées pour différents types de connexions, par exemple une connexion domestique ayant consommé jusqu'à 50 unités par mois serait une facture considérablement plus faible alors une connexion commerciale consommant 50 unités par mois.
La structure est à http://www.sqlfiddle.com/#!3/eeab6
Le champ application_nature dans la table des consommateurs définit quel type de connexion, il est commercial ou domestique.
Le paramètre payment_status de la table billing_history2 stocke une valeur booléenne indiquant si une facture a été payée ou non.
En utilisant cette requête, je génère la consommation totale d'un consommateur et les arriérés le cas échéant.
SELECT BILLING_HISTORY2.CONSUMER_ID, count(reading) AS 'DEFAULT PERIOD', SUM(reading) AS 'Total Reading' from BILLING_HISTORY2 where payment_status=0 GROUP by billing_history2.CONSUMER_ID;
Ce que je veux ici est de générer 1) une facture mensuelle en fonction des unités consommées depuis la dernière facture payée. 2) Une facture mensuelle basée sur le nombre total d'unités consommées depuis le mois, puis additionnée d'arriérés.
Toutes les suggestions.
Création d'une vue sur la VIEW_CUSTOMER_BILL de requête que j'ai posté dans ma question et __SELECT vmctu. [Total lecture], p2.price, vmctu. [Total lecture] * p2.price AS 'Bill' de VIEW_CUSTOMER_BILL vmctu INNER JOIN price_list2 p2 ON vmctu.application_nature = p2.flag AND vmctu. [Lecture totale] ENTRE p2.limit_start ET p2.limit_end __ me donne le Bill avec les arriérés. Cependant, cela prend en compte la somme totale des unités consommées qui n'ont pas été payées – user2018756
La vue que j'ai conçue ne fonctionne pas correctement, car elle ne soustrait pas le montant payé. – user2018756
Ma solution repose uniquement sur SQL pour essentiellement retirer des données du système.Vous voudrez probablement faire vos comparaisons de variables et ajouter/soustraire/multiplier dans n'importe quel langage de programmation que vous utilisez. Il n'y a que peu de choses que vous pouvez [facilement] faire nativement dans une base de données. – scottcarmich