Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何从sql中获取最近7天的数据_Sql Server_Group By_Datediff_Dateadd - Fatal编程技术网

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

Sql server 如何从sql中获取最近7天的数据,sql-server,group-by,datediff,dateadd,Sql Server,Group By,Datediff,Dateadd,我正在使用这个查询,它工作正常并检索我想要的值,唯一的问题是,如果给定的一天没有值,它不会将值显示为0 我需要的数据是过去7天的销售额总和,如果没有销售额,则应返回0 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 IN

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

我需要的数据是过去7天的销售额总和,如果没有销售额,则应返回0

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

考虑使用日期序列创建日历实用程序表,或者使用CTE生成日期序列。然后,您可以将其包含在查询中,以获取所有感兴趣的日期,以及一个左连接,以便在该日期存在数据时返回相关数据。您好,感谢您提供了awnser,但当我使用它时,它给出了错误:无法在date Thank上调用方法我设法使其工作,但当我放入where子句时,它不会再次显示数据,我不能使用where子句,它必须具有正确的连接。Thanks@PedroCorreia很高兴听到它对你有用: