gpt4 book ai didi

sql - 执行 GROUP BY 时插入缺失的条目?

转载 作者:行者123 更新时间:2023-12-03 03:07:11 24 4
gpt4 key购买 nike

我正在尝试在我的表格上使用GROUP BY来根据周对我的条目进行分组。但是,如果某周没有条目,我如何插入 0 而不是缺少条目?

CREATE TABLE #TEMP (startdate datetime)

INSERT INTO #TEMP VALUES('2011-02-01')
INSERT INTO #TEMP VALUES('2011-02-02')
INSERT INTO #TEMP VALUES('2011-02-03')
INSERT INTO #TEMP VALUES('2011-02-04')
INSERT INTO #TEMP VALUES('2011-02-05')
INSERT INTO #TEMP VALUES('2011-02-18')
INSERT INTO #TEMP VALUES('2011-02-19')
INSERT INTO #TEMP VALUES('2011-02-20')
INSERT INTO #TEMP VALUES('2011-02-21')

SELECT DATEPART(YEAR,startdate) AS 'AYear',
DATEPART(wk,startdate) AS 'AWeek',
COUNT(*)
FROM #TEMP
GROUP BY DATEPART(YEAR,startdate),DATEPART(wk,startdate)
ORDER BY 1,2

DROP TABLE #TEMP

我得到:

AYear   AWeek   (No column name)
2011 6 5
2011 8 2
2011 9 2

但我想要这个:

AYear   AWeek   (No column name)
2011 6 5
2011 7 0
2011 8 2
2011 9 2

关于如何做到这一点有什么建议吗?

最佳答案

您可以生成一个包含所有可能的周/年的表格,然后执行以下操作:

SELECT fw.Year AS 'AYear',
fk.Week AS 'AWeek',
SUM(CASE WHEN t.startdate is not null then 1 ELSE 0 END)
FROM FakeWeeks fw
LEFT OUTER JOIN #TEMP t ON DATEPART(YEAR,startdate) = fw.year AND DATEPART(wk,startdate) = fw.week
GROUP BY DATEPART(YEAR,startdate),DATEPART(wk,startdate)
ORDER BY 1,2

或者,如果您觉得经济实惠,可以生成两张表,一张包含年份,一张包含 1-52,然后将两者连接起来。

关于sql - 执行 GROUP BY 时插入缺失的条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6949649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com