2009-06-09 6 views
-1

Cette requête me renvoie d'abord sous le tableau. par exemple; 2009-06-01 00:00:00 les gens entrent dans mon système '41' fois. i besoin deuxième tableSql query Résultat mensuel mais comment?

declare @date1 smalldatetime, @date2 smalldatetime , @countgap int, @page nvarchar(100) 
select @date1='2009-01-01', @date2='2009-12-30 23:59:59' ,@countgap=1, @page='Tüm Sayfalar' 

declare @@date1 smalldatetime,@@date2 smalldatetime , @COUNT INT   
    select @@[email protected], @@[email protected] , @COUNT=1   
    select @@date1 TARIH , @COUNT SIRA   
    INTO #TMP   
    WHILE @@date1 < @@date2   
BEGIN   
    SELECT @@date1 = DATEadd(month,@countgap,@@date1) , @COUNT = @COUNT +1   
    INSERT INTO #TMP   
    select @@date1 TARIH , @COUNT SIRA   
END 
    select t1.TARIH, t1.SIRA, VISITINGCOUNT = isnull(t2.TARIH, 0)   
    from #TMP t1   
    left join ( 
    select count(page) as TARIH,    
     datepart(month,Date) as SIRA   
    from scr_StatisticaLog    
    where Date between @date1 and @date2 and 
     ([email protected] or @page='Tüm Sayfalar') and 
      ProcessType='PageView'  
    GROUP BY datepart(month,Date) 
      )t2 on t2.SIRA = t1.SIRA   
    order by t1.SIRA   
    return  

2009-01-01 00:00:00 1 0 
2009-02-01 00:00:00 2 0 
2009-03-01 00:00:00 3 0 
2009-04-01 00:00:00 4 1 
2009-05-01 00:00:00 5 1 
2009-06-01 00:00:00 6 41 
2009-07-01 00:00:00 7 0 
2009-08-01 00:00:00 8 0 
2009-09-01 00:00:00 9 0 
2009-10-01 00:00:00 10 0 
2009-11-01 00:00:00 11 0 
2009-12-01 00:00:00 12 1 
2010-01-01 00:00:00 13 0 


2009-January  12 1 

+0

Et qu'est-ce que la deuxième table? – Welbog

+0

Demandez-vous simplement comment formater les dates? – Welbog

+0

oui j'ai besoin '2009-janvier 12 1' – Penguen

Répondre

0

ce que vous avez besoin est un calendar table chaque jour en elle. après cela, vous venez de rejoindre et d'obtenir votre deuxième table.

EDIT: ahh .. nouvelles informations de type d'affiche de cette réponse Invalide ...

+0

Si votre réponse est entièrement invalide, supprimez-la. –

+0

pas wholy. c'est toujours un bon conseil :) –

0

œuvres de réponse de Welbog.

J'irais un peu plus loin. En terrain MySQL, je ferais juste une gauche (10) sur la date, et je grouperais par là. Vous pouvez ensuite faire toute votre requête en un seul passage sans tables ou boucles temporaires. Je pense que le serveur SQL vous laissera soustraire une date, mais sinon vous pouvez le faire en construisant la date comme Welbog vous l'a montré.