如何从 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
我正在使用这个查询,它工作正常并检索我想要的值,唯一的问题是如果给定日期没有值,它不会将值显示为 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