01. juli 2008 - 20:02Der er
14 kommentarer og 1 løsning
SQL Forespørgsel
Heysa
Jeg har et udtræk som kører hos en kunde - udtrækket samler salgsdata op fra et kassesystem.
Som mit udtræk er nu kan jeg køre dette f.eks. kl. 22 om aftenen og statistikken bliver overført til et økonomi program.
Dette er sådan set fint nok men nu har jeg behov for at udtrækket skal køre hver time og jeg skal kun hente de nye solgte varer for den sidste time - lidt svært at forklare... men udtrækket skal første gang hente statistik fra kl. 9:00-9:59, anden gang det kører skal det være fra kl. 10:00-10:59 osv.
Jeg ved ikke om udtrækket skal bestå af 12 forskellige udtræk eller om det på nogen måde kan laves dynamisk. Det er dog ikke afgørende.
Mit udtræk som tager for hele dagen som det er nu ser sådan her ud: select PLU,NodeNo as Kasse,DateSold as Salgsdato, QTY as Antal, Price+Tax as TotalPris, Tax as Moms from JNLtickets where day(DateSold)=day(getDate()) and month(DateSold)=month(getDate()) and year(DateSold)=year(getDate()) and NodeNo != 51 and NodeNo != 52 and NodeNo != 53 and NodeNo != 54 and NodeNo != 60 order by NodeNO, PLU
En løsning jeg før har set er, at man laver en lille hjælpetabel i sin database. Denne tabel indeholder blot information om hvornår sidste data-kopiering blev foretaget.
Fx CREATE TABLE DataKopieringsLog ( Id INT IDENTITY (1,1) PRIMARY KEY, timestamp DATETIME )
Hver gang du så kører dit kopieringsjob, laver du først lige en:
Jeg har oprettet tabellen og mit udtræk ser således ud nu: DECLARE @FromDate DATETIME DECLARE @ToDate DATETIME
SELECT @FromDate = MAX(timestamp) FROM DataKopieringsLog SET @ToDate = GETDATE()
select PLU,NodeNo as Kasse,DateSold as Salgsdato, QTY as Antal, Price+Tax as TotalPris, Tax as Moms from JNLtickets where DateSold >= @FromDate AND DateSold < @ToDate and NodeNo != 51 and NodeNo != 52 and NodeNo != 53 and NodeNo != 54 order by NodeNO, PLU
INSERT INTO DataKopieringsLog (timestamp) VALUES (@ToDate) GO
Når jeg tester fra query analyzer virker det perfekt men når jeg vil sætte det til at køre i en scheduler via import & export data får jeg en fejl når jeg vælger use a query to specify the data to transfer og kopierer ovenstående ind får jeg en fejl når jeg klikker på parse: unspecified error...
Jeg kan ikke lige huske om der er nogle begrænsninger i hvad man kan fra en import/export ting - men du kan evt lave det hele som en stored procedure, og så kalde sp'en fra din schedule.
SELECT @FromDate = MAX(timestamp) FROM DataKopieringsLog SET @ToDate = GETDATE()
select PLU,NodeNo as Kasse,DateSold as Salgsdato, QTY as Antal, Price+Tax as TotalPris, Tax as Moms from JNLtickets where DateSold >= @FromDate AND DateSold < @ToDate and NodeNo != 51 and NodeNo != 52 and NodeNo != 53 and NodeNo != 54 order by NodeNO, PLU
INSERT INTO DataKopieringsLog (timestamp) VALUES (@ToDate) ----------
SELECT @FromDate = MAX(timestamp) FROM DataKopieringsLog SET @ToDate = GETDATE()
select PLU,NodeNo as Kasse,DateSold as Salgsdato, QTY as Antal, Price+Tax as TotalPris, Tax as Moms from JNLtickets where DateSold >= @FromDate AND DateSold < @ToDate and NodeNo != 51 and NodeNo != 52 and NodeNo != 53 and NodeNo != 54 order by NodeNO, PLU
INSERT INTO DataKopieringsLog (timestamp) VALUES (@ToDate) ----------
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.