J'ai besoin de conseils pour résoudre une requête. Je peux gérer cela dans une application frontale, cependant, en raison de la conception, je dois mettre cela en place dans le back-end. J'ai les suivantesCONSEIL sur la requête de facturation dans SQL Server 2000
CREATE TABLE [dbo].[openitems](
[id] [varchar](8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[type] [char](5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[date] [smalldatetime] NULL,
[amount] [decimal](9, 2) NULL,
[daysOpen] [smallint] NULL,
[balance] [decimal](9, 2) NULL
) ON [PRIMARY]
insert into openitems values('A12399','INV','2008-12-05',491.96,123)
insert into openitems values('A12399','INV','2008-12-12',4911.37,116)
insert into openitems values('A12399','INV','2008-12-05',3457.69,109)
Le tableau ci-dessus ont toutes les factures ouvertes pour un client. Je dois appliquer un paiement à ces factures à partir de la facture la plus ancienne (colonne daysOpen dans le tableau). Donc, si j'ai un paiement de 550,00 $, je vais d'abord l'appliquer à la facture avec 123 jours, soit 491,96 $ - 500 $ (ce qui laisse 8,04 $ à appliquer à la prochaine facture ... et ainsi de suite), puis mettre à jour colonne dans le tableau) à 0.00 et passer à la suivante et appliquer le reste. Ce serait 4911,37 $ - 8,04 $, ce qui laisserait 4903,33 $. Comme il n'y a plus de solde à appliquer, la boucle se termine.
La colonne équilibre doit maintenant
0 4903.33 3457.69
Note: Je dois faire cela pour tous les clients dans un tableau (environ 10 000). Un client a en moyenne une vingtaine de factures ouvertes.
Merci
Parfois, cela me rend fou d'essayer d'implémenter Business Logic dans le magasin de données. –
SQL est sur les ensembles; Si vous pensez que les termes des ensembles, cela devient évident. Tout comme, disons, Haskell semble bizarre et alambiqué aux programmeurs avec un arrière-plan uniquement dans les langages impératifs, mais plus propre et plus doux pour les programmeurs Haskell. – tpdi