创建一个日期维度表:
CREATE TABLE date_dim (
date_id INT PRIMARY KEY,
date DATE NOT NULL,
year INT NOT NULL,
quarter INT NOT NULL,
month INT NOT NULL,
day INT NOT NULL,
week INT NOT NULL
);
使用以下代码插入日期行,从2020年1月1日到2020年12月31日:
DECLARE @date DATE = '2020-01-01';
WHILE @date <= '2020-12-31'
BEGIN
INSERT INTO date_dim (date_id, date, year, quarter, month, day, week)
SELECT
CONVERT(INT, CONVERT(VARCHAR, @date, 112)),
@date,
DATEPART(YEAR, @date),
DATEPART(QUARTER, @date),
DATEPART(MONTH, @date),
DATEPART(DAY, @date),
DATEPART(WEEK, @date)
SET @date = DATEADD(day, 1, @date);
END;
然后,你可以将数据表关联到此日期表,以便对每个日期跟踪活动:
SELECT
d.date,
COUNT(a.activity_id) AS activity_count
FROM
date_dim d
LEFT JOIN
activity_table a
ON d.date = a.activity_date
GROUP BY
d.date;
这将返回每个日期和该日期上的活动数量。