Loop gennem 3 tabeller-oversættelse fra VBA til Stored procedure
Jeg har 3 tabeller: 1. Hovedtabel der skal løbes igennem og opdateres på grundlag af 2 "sub" - tabeller.
2. Sub-tabel her skal foretages en opsumering på grundlag af et ID fra hoved tabelen, hvis summen er >0 så sættes en boolean til sand. 3. Sub-tabel ditto, men er summen <0 så sættes en boolean til sand.
Hvis boolean er sand sættes felt i hovedtabel til sand.
Jeg forestiller mig at man kunne løbe hovedtabellen igennem og i dette gennemløb hente data fra sub-tabel 1 ala: Select * from SubTabel_1 Where ID=HovedTabel!ID
Så evt. en do while sætning som opsumerer værdier fra denne sub-tabel_1
Når dette gennemløb af subtabel_1 er færdigt så gøres ditto med subtabel_2 Og til sidst opdateres hoved tabelen med resultatet af boolean, der så sættes til falsk ligesom opsumerings variablerne sættes til 0.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Kan du prøve at forklare lidt nærmere, hvad du ønsker.
Du har to sub-tabeller, hvor du ønsker at sette en boolean værdi til true/false i hovedtabellen, afhængig af summering i sub-tabeller?
Er det noget i retnigne af:
UPDATE h SET ChckFeltSub1 = CASE WHEN Sub1.Total > 0 THEN -1 ELSE 0 END FROM Hovedtabel h LEFT JOIN (SELECT ID, Sum(Beløb) AS Total FROM SubTabel1 GROUP BY ID ) Sub1 ON h.ID = Sub1.ID
UPDATE h SET ChckFeltSub2 = CASE WHEN Sub2.Total < 0 THEN -1 ELSE 0 END FROM Hovedtabel h LEFT JOIN (SELECT ID, Sum(Beløb) AS Total FROM SubTabel2 GROUP BY ID ) Sub1 ON h.ID = Sub2.ID
Ovenstående kan nok også komprimeres ned til én Update:
UPDATE h SET ChckFeltSub1 = CASE WHEN Sub1.Total > 0 THEN -1 ELSE 0 END ChckFeltSub2 = CASE WHEN Sub2.Total < 0 THEN -1 ELSE 0 END FROM Hovedtabel h LEFT JOIN (SELECT ID, Sum(Beløb) AS Total FROM SubTabel1 GROUP BY ID ) Sub1 ON h.ID = Sub1.ID LEFT JOIN (SELECT ID, Sum(Beløb) AS Total FROM SubTabel2 GROUP BY ID ) Sub1 ON h.ID = Sub2.ID
UPDATE h SET ChckFeltSub1 = CASE WHEN Sub1.Total > 0 THEN -1 ELSE 0 END ChckFeltSub2 = CASE WHEN Sub2.Total < 0 THEN -1 ELSE 0 END FROM Hovedtabel h LEFT JOIN (SELECT ID, Sum(Beløb) AS Total FROM SubTabel1 GROUP BY ID ) Sub1 ON h.ID = Sub1.ID LEFT JOIN (SELECT ID, Sum(Beløb) AS Total FROM SubTabel2 GROUP BY ID ) Sub1 ON h.ID = Sub2.ID
UPDATE h SET ChckFeltSub1 = CASE WHEN Sub1.Total > 0 THEN -1 ELSE 0 END, ChckFeltSub2 = CASE WHEN Sub2.Total < 0 THEN -1 ELSE 0 END FROM Hovedtabel h LEFT JOIN (SELECT ID, Sum(Beløb) AS Total FROM SubTabel1 GROUP BY ID ) Sub1 ON h.ID = Sub1.ID LEFT JOIN (SELECT ID, Sum(Beløb) AS Total FROM SubTabel2 GROUP BY ID ) Sub1 ON h.ID = Sub2.ID
Tak for dit svar jeg vil lige teste det og se om "den vil" ;-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.