如:
Select convert(varchar(10),AddTime,120) as AddTime, COUNT(*) AS ClickTime From TableName   Where DateDiff(dd,   AddTime, GetDate()) <=  7
AND (UserID = @UserID)
group by convert(varchar(10),AddTime,120)上面的sql显示7天前的记录,但有些日期没有记录就不显示出来,我希望7天都能显示出来,没有记录的显示0,请问可以实现吗?

解决方案 »

  1.   

    Select isnull(convert(varchar(10),AddTime,120),0) as AddTime, COUNT(*) AS ClickTime From TableName Where DateDiff(dd, AddTime, GetDate()) <= 7
      

  2.   

    Select convert(varchar(10),isnull(AddTime,'1900-01-01'),120) as AddTime, COUNT(*) AS ClickTime From TableName Where (DateDiff(dd, AddTime, GetDate()) <= 7 or AddTime='1900-01-01')
    AND (UserID = @UserID)
    group by convert(varchar(10),isnull(AddTime,'1900-01-01'),120)
      

  3.   

    AddTime换成isnull(AddTime,'1900-1-1')
      

  4.   


    DECLARE @MinDate DATETIME,@MaxDate DATETIME
    SELECT @MinDate=CONVERT(VARCHAR(10),MIN(AddTime),120),@MaxDate=CONVERT(VARCHAR(10),MAX(AddTime),120)  From TableName Where DateDiff(dd, AddTime, GetDate()) <= 7 AND (UserID = @UserID)
    ;WITH DateDay
    AS
    (
    SELECT @MinDate AS DateDay ,UserID = @UserID
    UNION ALL
    SELECT DateDay+1,UserID FROM DateDay WHERE DateDay<@MaxDate
    )
    Select 
    b.DateDay as AddTime, 
    COUNT(*) AS ClickTime 
    From TableName AS a
    RIGHT JOIN DateDay AS b ON convert(varchar(10),a.AddTime,120)=b.DateDay AND a.UserID=b.UserID
    group by b.UserID,b.DateDay
    OPTION(MAXRECURSION 0)
      

  5.   


    CREATE TABLE #TableName(
    AddTime DATETIME,
    BH VARCHAR(20)
    )INSERT INTO #TableName VALUES ('2011-01-10','1')
    INSERT INTO #TableName VALUES ('2011-01-11','2')
    INSERT INTO #TableName VALUES ('2011-01-12','3')SELECT * FROM #TableNameSELECT A.ADDTIME,COUNT(#TableName.BH) AS ClickTime FROM 
    (SELECT  CONVERT(VARCHAR(10), DATEADD(DAY, NUMBER, GETDATE()-7), 120) AS ADDTIME
    FROM    MASTER..SPT_VALUES
    WHERE   TYPE = 'P' AND 
            NUMBER<7) A LEFT JOIN #TableName ON A.ADDTIME = #TableName.AddTime
    GROUP BY A.ADDTIME
      

  6.   

    还是不行,还是只显示出一条的记录,我的目的是显示:
    AddTime ClickTime
    2010-1-16   0
    2010-1-15   2
    2010-1-14   0
    2010-1-13   0
    2010-1-12   0
    2010-1-11   0
    2010-1-10   0
    最近的7天,没有记录的ClickTime显示0