ACCESS, summera datum och hämta kvantitet

Permalänk
Medlem

ACCESS, summera datum och hämta kvantitet

Jag är inte världens bästa på att ta fram information från vårt affärssystem och skulle behöva er hjälp.

Vi kör ett affärssystem som jag har tillgång att hämta information via sql (Lugn i båten jag kör mot en clone, så detta drabbar aldrig produktionsservern). Jag har två kolumner en med Datum och en med Kvantiteter. Jag hämtar ut information med Access för enkelhetensskull.

Det jag vill uppnå är att ta fram summerade kvantitet 3 månader, 6 månader osv tillbaka i tiden. Jag kan såklart kör flera olika frågor mot servern separat för 3 mån, 6mån osv, men jag vill gör allt i samma fråga. Är detta möjligt?

Tabellen heter dbo_INVENTTRANS

Fält datum: DATEPHYSICAL
Fält kvantitet: QTY

Hoppas ni förstår vad jag menar?

Visa signatur

Är en helt vanlig ekonom...

Permalänk
Hedersmedlem

Ja, det är möjligt med sub querys. Dvs gör en fråga för varje intervall du vill ha och sedan en fråga som slår ihop dem till ett resultat. Det blir dock en rörig lösning som inte ger någon direkt vinst mer än att du får ut svaret som en rad.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem
Skrivet av giplet:

Ja, det är möjligt med sub querys. Dvs gör en fråga för varje intervall du vill ha och sedan en fråga som slår ihop dem till ett resultat. Det blir dock en rörig lösning som inte ger någon direkt vinst mer än att du får ut svaret som en rad.

Kan du ge mig ett exempel på detta? Rörigt gör inget.

Visa signatur

Är en helt vanlig ekonom...

Permalänk
Hedersmedlem
Skrivet av Argit:

Kan du ge mig ett exempel på detta? Rörigt gör inget.

Kan tyvärr inte så till tjänst med exempel, men börja med att göra två frågor som ger dig svaret på summan för 3 mån resp 6 mån i ett fält. Det enklaste är om du har olika namn på fältet så att det heter Sum3Months resp Sum6Months eller liknande. Sedan skapar du en tredje fråga där du lyfter in de två andra frågorna som tabeller och väljer med båda fälten. Om Access försöker skapa en relation mellan tabellerna så tar du bort den.

Och om du inte reder ut att göra detta så tycker jag att du ska lägga ner Access. För i så fall så gör du en rörig lösning i ett verktyg som du inte behärskar vilket låter som en säker källa till problem längre fram.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Avstängd

Det låter mer som om du vill ha en rapport. SSRS (SQL Server Reporting Services) är väldigt kraftfullt men inte så lättjobbat direkt. Men om du lyckas skapa en rapport där med den info du vill ha så kan du ju bara titta på när du vill och få fram aktuell data osv. utan att behöva köra några querys själv. Jag jobbar med sådana saker och det är så vi gör, exponerar standardrapporter till våra kunder och bygger en massa specialanpassade efter hur de vill segmentera och så. Det finns också verktyg som bara är till för att göra data tillgängligt för personer som inte kan databaser som exempelvis QlikView, men det är inte billigt.

En enkel SQL-query skulle annars typ vara:

SELECT (SELECT SUM(antal) WHERE DATEPHYSICAL BETWEEN DATEADD(month, -3, GETDATE()) AND GETDATE()) AS TreMånader (SELECT SUM(antal) WHERE DATEPHYSICAL BETWEEN DATEADD(month, -6, GETDATE()) AND GETDATE()) AS SexMånader (SELECT SUM(antal) WHERE DATEPHYSICAL BETWEEN DATEADD(month, -12, GETDATE()) AND GETDATE()) AS TolvMånader FROM dbo_INVENTTRANS

Permalänk
Medlem
Skrivet av giplet:

Kan tyvärr inte så till tjänst med exempel, men börja med att göra två frågor som ger dig svaret på summan för 3 mån resp 6 mån i ett fält. Det enklaste är om du har olika namn på fältet så att det heter Sum3Months resp Sum6Months eller liknande. Sedan skapar du en tredje fråga där du lyfter in de två andra frågorna som tabeller och väljer med båda fälten. Om Access försöker skapa en relation mellan tabellerna så tar du bort den.

Och om du inte reder ut att göra detta så tycker jag att du ska lägga ner Access. För i så fall så gör du en rörig lösning i ett verktyg som du inte behärskar vilket låter som en säker källa till problem längre fram.

Det var de jag inte ville göra dvs. två frågor, annars vore det enkelt (om du läser frågan). Dina antagande sista stycket, säger mer om dig än mig.

Skrivet av snajk:

Det låter mer som om du vill ha en rapport. SSRS (SQL Server Reporting Services) är väldigt kraftfullt men inte så lättjobbat direkt. Men om du lyckas skapa en rapport där med den info du vill ha så kan du ju bara titta på när du vill och få fram aktuell data osv. utan att behöva köra några querys själv. Jag jobbar med sådana saker och det är så vi gör, exponerar standardrapporter till våra kunder och bygger en massa specialanpassade efter hur de vill segmentera och så. Det finns också verktyg som bara är till för att göra data tillgängligt för personer som inte kan databaser som exempelvis QlikView, men det är inte billigt.

En enkel SQL-query skulle annars typ vara:

SELECT (SELECT SUM(antal) WHERE DATEPHYSICAL BETWEEN DATEADD(month, -3, GETDATE()) AND GETDATE()) AS TreMånader (SELECT SUM(antal) WHERE DATEPHYSICAL BETWEEN DATEADD(month, -6, GETDATE()) AND GETDATE()) AS SexMånader (SELECT SUM(antal) WHERE DATEPHYSICAL BETWEEN DATEADD(month, -12, GETDATE()) AND GETDATE()) AS TolvMånader FROM dbo_INVENTTRANS

Tack så mycket, jag vill helst inte jobba med SSRS. Exakt den koden du skickar fungerar inte i ACCESS och de är liknande de jag har försökt tidigare. Men jag fortsätter knåpa lite här och ser vart jag hamnar.

Visa signatur

Är en helt vanlig ekonom...

Permalänk
Hedersmedlem
Skrivet av Argit:

Det var de jag inte ville göra dvs. två frågor, annars vore det enkelt (om du läser frågan). Dina antagande sista stycket, säger mer om dig än mig.

Tack så mycket, jag vill helst inte jobba med SSRS. Exakt den koden du skickar fungerar inte i ACCESS och de är liknande de jag har försökt tidigare. Men jag fortsätter knåpa lite här och ser vart jag hamnar.

Jag tolkade dig som att du vill få svaret konsoliderat i en fråga, dvs du hämtar ut en rad med data med alla svaren i olika kolumner. Sättet att göra detta på är med flera frågor i Access. Varje SELECT i exemplet ovan måste så vitt jag vet vara en egen fråga, dvs tre frågor som tar ut delarna av svaret och en som slår ihop dem. Vill du absolut inte använda flera frågor så är det synd om dig. Byt verktyg. Å andra sidan ser jag inte vad det skulle spela dig för roll hur Access löser problemet under huven så länge du får ut alla svaren med ett anrop.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Avstängd
Skrivet av Argit:

Tack så mycket, jag vill helst inte jobba med SSRS. Exakt den koden du skickar fungerar inte i ACCESS och de är liknande de jag har försökt tidigare. Men jag fortsätter knåpa lite här och ser vart jag hamnar.

Nej, Access och SQL skiljer sig på en del ställen (Access kanske finns på svenska också, med svenska funktioner som Excel, och då funkar förstås ingen SQL-syntax alls). Men jag uppfattade det som att databasen var SQL och du bara använde Access som gränssnitt, och då borde du kunna få köra denna fråga eller få någon annan att göra det eller så. Jag hade nog löst det, om SSRS inte var ett alternativ, via en stored procedure någonstans som du kan anropa från Access (om det ens är möjligt beror nog på hur kopplingen mellan Access och SQL Server är uppsatt, men jag har ingen större koll på Access), sen handlar det bara om att anropa den.

CREATE STORED PROCEDURE sp_MinProcedur ( @treMån INT OUTPUT @sexMån INT OUTPUT @tolvMån INT OUTPUT) AS SET @treMån = (SELECT SUM(antal) FROM dbo_INVENTTRANS WHERE DATEPHYSICAL BETWEEN DATEADD(month, -3, GETDATE()) AND GETDATE() SET @sexMån = (SELECT SUM(antal) FROM dbo_INVENTTRANS WHERE DATEPHYSICAL BETWEEN DATEADD(month, -6, GETDATE()) AND GETDATE() SET @tolvMån = (SELECT SUM(antal) FROM dbo_INVENTTRANS WHERE DATEPHYSICAL BETWEEN DATEADD(month, -12, GETDATE()) AND GETDATE() --Alternativt att du har två villkor för att kolla datumet, BETWEEN stöds inte av alla versioner av SQL Server, typ: -- WHERE DATEPHYSICAL > DATEADD(month, -3, GETDATE()) AND DATEPHYSICAL < GETDATE()

Permalänk
Medlem

Databasen kör SQL så det är rätt uppfattat. Tyvärr har jag inget annat sätt att anropa SQL-databasen på än genom Access, men ska nog kolla upp detta.

Tack för all hjälp @snajk

Skrivet av snajk:

Nej, Access och SQL skiljer sig på en del ställen (Access kanske finns på svenska också, med svenska funktioner som Excel, och då funkar förstås ingen SQL-syntax alls). Men jag uppfattade det som att databasen var SQL och du bara använde Access som gränssnitt, och då borde du kunna få köra denna fråga eller få någon annan att göra det eller så. Jag hade nog löst det, om SSRS inte var ett alternativ, via en stored procedure någonstans som du kan anropa från Access (om det ens är möjligt beror nog på hur kopplingen mellan Access och SQL Server är uppsatt, men jag har ingen större koll på Access), sen handlar det bara om att anropa den.

CREATE STORED PROCEDURE sp_MinProcedur ( @treMån INT OUTPUT @sexMån INT OUTPUT @tolvMån INT OUTPUT) AS SET @treMån = (SELECT SUM(antal) FROM dbo_INVENTTRANS WHERE DATEPHYSICAL BETWEEN DATEADD(month, -3, GETDATE()) AND GETDATE() SET @sexMån = (SELECT SUM(antal) FROM dbo_INVENTTRANS WHERE DATEPHYSICAL BETWEEN DATEADD(month, -6, GETDATE()) AND GETDATE() SET @tolvMån = (SELECT SUM(antal) FROM dbo_INVENTTRANS WHERE DATEPHYSICAL BETWEEN DATEADD(month, -12, GETDATE()) AND GETDATE() --Alternativt att du har två villkor för att kolla datumet, BETWEEN stöds inte av alla versioner av SQL Server, typ: -- WHERE DATEPHYSICAL > DATEADD(month, -3, GETDATE()) AND DATEPHYSICAL < GETDATE()

Visa signatur

Är en helt vanlig ekonom...