08. april 2008 - 08:22Der er
3 kommentarer og 1 løsning
sortere efter hver dag i en måned - og joine to tabeller
Jeg har to tabeller :
clicktrack:
Hver række indeholder det samlede antal clicks den pågældende dag. eks. id dato clicks 1. 2/4-2008 : 40 2. 3/4-2008 : 30
Jeg har nu brug for en query der viser alle dage i en måned og det samlede antal clicks pr. dag. Det kan ske at der ingen clicks har været den pågældende dag - og der derfor ikke er nogen række oprettet til dagen. I det tilfælde skal clicks for den dag sættes til 0.
Den anden tabel kaldet SalesTrack: id dato sale 1. 2/4-2008 1500DKK 2. 2/4-2008 500DKK 2. 3/4-2008 200DKK
Det skal også vises i resultatet sådan at har der været 2 salg den pågældende dag skal de lægges sammen eks. (1500+500 d. 2/4)
Resultatet skal se således ud:
id dato antalSalg Beloeb 1. 1/4-2008 0 0 0 1. 2/4-2008 40 2 2000 2. 3/4-2008 30 1 200 3. 4/4-2008 0 0 0 osv frem til d. 30
Kan nogen hjælpe med en sqlquery der kan lave en sådan forespørgsel.
SET @year = 2008 SET @month = 4 SET @StartDate = cast(cast(@month as varchar(10)) + '-1-' + cast(@year as varchar(10)) as datetime) SET @EndDate = dateadd(m,1,@StartDate)
DECLARE @temp TABLE (Date_Time datetime)
SET @Date = @StartDate
While @Date < @EndDate BEGIN
INSERT INTO @temp SELECT @Date
SELECT @Date = dateadd(d,1, @Date) END
SELECT * from @temp LEFT JOIN ClickTrack on (ClickTrack.trackDate = Date_Time AND shopId = 1) END GO
jeg har fået fixet ovenstående sammen som virker fint til at vise antal clicks per dag og samtidig vise alle dagene i måneden - men hvordan får jeg også vist antal salg per dag.
ALTER PROCEDURE GetMonthlyClicksAndSales -- Add the parameters for the stored procedure here ( @shopId int, @trackMonth int, @trackYear int ) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON;
-- Insert statements for procedure here Declare @year int, @month int, @StartDate datetime, @EndDate datetime Declare @Date datetime
SET @year = 2008 SET @month = 4 SET @StartDate = cast(cast(@month as varchar(10)) + '-1-' + cast(@year as varchar(10)) as datetime) SET @EndDate = dateadd(m,1,@StartDate)
DECLARE @temp TABLE (Date_Time datetime)
SET @Date = @StartDate
While @Date < @EndDate BEGIN
INSERT INTO @temp SELECT @Date
SELECT @Date = dateadd(d,1, @Date) END
SELECT T.Date_Time, SUM(S.Amount) as Amount, count(*) as antalSalg , MIN(CT.Clicks) as Clicks from @temp T LEFT JOIN ClickTrack CT on CT.trackDate = T.Date_Time AND shopID = 1 LEFT JOIN TrackSales S ON S.ShopID=CT.ShopID AND CT.TrackDate=S.SaleDate GROUP BY T.Date_Time END GO
ny og forbedret version - men skal have nogen til at hjælpe med COUNT(*) - nu returneres der 1 - også selvom intet salg er foretaget den dag - er der lavet mere end 1 salg den pågældende dag - men dage hvor intet salg er foretaget skal rettes til 0.
prøver lige igen : skal have hjælp med COUNT(*) nu returneres der 1 - også selvom intet salg er foretaget den dag - er der lavet mere end 1 salg den pågældende dag er tallet der returneres korrekt - men dage hvor intet salg er foretaget skal returnere 0.
nå jeg knokler videre selv - kan desværre ikke vente længere på svar
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.