如何从 sql 获取最近 7 天的数据

How to get the last 7 days data from sql

我正在使用这个查询,它工作正常并检索我想要的值,唯一的问题是如果给定日期没有值,它不会将值显示为 0。

我需要的数据是最近7天的销售额总和,如果没有销售额应该return0.

SELECT 
    DATEADD(DAY, 0, DATEDIFF(day, 0, vendas.data)) AS data, 
    COUNT(aff_sub.N_Enc) AS tot_enc, 
    SUM(aff_sub.Valor) AS tot_vendas 
FROM 
    aff_sub 
INNER JOIN 
    vendas ON aff_sub.N_Enc = vendas.ID 
WHERE 
    (aff_sub.ID = 1538)  
    AND (vendas.data >= DATEADD(day, - 7, GETDATE())) 
GROUP BY 
    DATEADD(DAY, 0, DATEDIFF(day, 0, vendas.data))

谁能帮帮我? 谢谢

您尝试使用 CTE 生成最近 7 天的以下逻辑,始终考虑 getdate()

WITH dates as 
(
  select cast(getdate() as date) as dte, 1 as cnt
  union all
  select dateadd(day, -1, dte), cnt + 1
  from dates
  where cnt < 7
)

SELECT dte,
COUNT(A.N_Enc) AS tot_enc, 
SUM(A.Valor) AS tot_vendas
FROM dates D
LEFT JOIN vendas V ON V.data = D.dte
LEFT JOIN aff_sub A ON A.N_Enc = V.ID
GROUP BY dte