Sql 获取最近7天的日期数据
我需要从SQL Server中的表中获取从今天到过去7天的每个日期的最后7天数据计数,我使用下面的查询来获取结果Sql 获取最近7天的日期数据,sql,sql-server,Sql,Sql Server,我需要从SQL Server中的表中获取从今天到过去7天的每个日期的最后7天数据计数,我使用下面的查询来获取结果 select convert(varchar(10),dDate,101),count(convert(varchar(10),dDate,101)) from tblPanDetails where dDate BETWEEN GETDATE()-7 AND GETDATE() group by convert(varchar(10),dDate,101) 它的工作性能和结果是在
select convert(varchar(10),dDate,101),count(convert(varchar(10),dDate,101)) from tblPanDetails
where dDate BETWEEN GETDATE()-7 AND GETDATE()
group by convert(varchar(10),dDate,101)
它的工作性能和结果是在数据库中这些日期信息只能从过去7天内获得
Column1 Column2
02/19/2020 4
02/20/2020 1
02/21/2020 2
02/22/2020 3
02/25/2020 1
但我需要,如果日期中没有数据,它将是0,如下所示
column1 column2
02/25/2020 5
02/24/2020 0
02/23/2020 6
02/22/2020 2
02/21/2020 1
02/20/2020 0
02/19/2020 2
请帮助我在SQL中获取上述结果。您可以使用临时表动态生成所需的日期。然后将此表与您的表合并以形成计数
IF OBJECT_ID('tempdb..#tblCurrentDates') IS NOT NULL DROP TABLE #tblCurrentDates
IF OBJECT_ID('tempdb..#tblPanDetails') IS NOT NULL DROP TABLE #tblPanDetails
DECLARE @DateFrom DATE, @DateTo DATE
SET @DateFrom = GETDATE()-7
SET @DateTo = GETDATE()
-- Generate 7 days dates in temp table
SELECT DATEADD(DAY,number+1,@DateFrom) [Date]
INTO #tblCurrentDates
FROM master..spt_values
WHERE type = 'P'
AND DATEADD(DAY,number+1,@DateFrom) < @DateTo
-- This is your temp table, for testing purposes
SELECT dDate= CAST(GETDATE()-1 as DATE)
INTO #tblPanDetails
--SELECT All dates with their counts in your table including no values
SELECT
Column1 = c.[Date],
Column2 = COUNT(dDate)
FROM #tblCurrentDates c
LEFT OUTER JOIN #tblPanDetails d on d.dDate = c.[Date]
GROUP BY dDate, [Date]
您可以在查询中轻松构建7天的数据:
select v.dte, count(pd.dDate)
from (values (convert(date, getdate() - 7)),
(convert(date, getdate() - 6)),
(convert(date, getdate() - 5)),
(convert(date, getdate() - 4)),
(convert(date, getdate() - 3)),
(convert(date, getdate() - 2)),
(convert(date, getdate() - 1))
) v(dte) left join
tblPanDetails pd
on convert(date, pd.dDate) = v.dte
group by v.dte
order by v.dte;
请注意,我将第一列保留为日期。您当然可以将其转换为字符串,但我更喜欢真实的日期。很好,但它会返回以下结果,``Column1Column2 2/19/2020 12:00:00 AM 0 2/20/2020 12:00:00 AM 0 2/21/2020 12:00:00 AM 0 2/22/2020 12:00:00 AM 0 2/23/2020 12:00:00 AM 0 2/24/2020 12:00:00 AM 1``实际上,我的表包含以下一些日期的数据计数, 02/19/2020 4 02/20/2020 1 02/21/2020 2 02/22/2020 3 02/25/2020 1@Sathishkumar我给了你一个标准的解决方案,按照你想要的格式设置日期。使用你自己的桌子!