在表中的该日期没有记录存在的日期的查询结果中创建条目

时间:2012-10-29 20:08:56

标签: sql tsql

我正在尝试找出一种方法来编写一个查询,该查询将从日志表中提取最近7天的记录。查询需要返回日期和描述。如果没有日期条目,则查询仍需要在结果中返回该日期。 如何在该日期的日志文件中没有任何内容的情况下创建记录?

谢谢, crjunk

这是预期结果的一个例子:

10/29/2012, null

10/28/2012, null

10/27/2012, null

10/26/2012, "Error: Unable to load xyz."

10/25/2012, null

10/24/2012, null

10/23/2012, null

1 个答案:

答案 0 :(得分:0)

这是我的方式。希望它能帮到你。我想要一点解释,你应该有你所说的日期清单。此外,即使在该日期没有记录,您也需要使用LEFT OUTER JOIN来加入具有特定日期的日志以获取日期。我使用了一点CTE来生成日期并创建了一个名为"Log"的示例表,如下面的代码所示。

;   With    Days    (
    Value
)   As  (
    Select  1
Union   All
    Select  Value
    +   1
        From    Days
        Where   Value   <   31
)   Select  Dates.DateString
    ,   Count(Log.Id)
        From    (
            Select  Convert(Nvarchar(10), DateAdd(Day, -Value, GetDate()), 102) As  DateString
                From    Days
        )   As  Dates
        Left    Outer   Join
            Log
        On  Convert(Nvarchar(10), Log.Date, 102)    =   Dates.DateString
        Group   By  Dates.DateString

干杯