在 SQL Server 中,我对数据上的用户年龄组运行查询,其中,在某些年里,每个年龄组的用户数为零。例如,2013 年有“18-21”年龄组的用户,因此查询返回下一个年龄组“22-25”作为第一行,因为没有包含“18-21”的条目。相反,我想返回包含 18-21 的行,但用户数量的值是 0。
目前,我有:
SELECT YEAR, AGE_GROUP, SUM(USERS) as usercount,
FROM USERS
WHERE YEAR = '2013'
AND PRIMARY_GROUP = 'NT'
GROUP BY YEAR, AGE_GROUP
这将返回:
YEAR AGE_GROUP usercount
2014 22-25 200
2014 25-28 10
我希望它返回:
YEAR AGE_GROUP usercount
2014 18-21 0
2014 22-25 200
2014 25-28 10
如何为不存在的特定值创建一行并用 0 值填充计数?
根据记录,我实际上在用户表中有一个名为“用户”的列。我知道这很令人困惑,但我接管了一个愚蠢的命名模式。用户表包含有关我的用户的数据以进行报告。它可能应该被命名为类似 Users_Reporting 的名称。
我假设您有另一个包含年龄组所有行的表。
表名:年龄组
AGE_GROUP
18-21
22-25
25-28
尝试这个:
SELECT '2014' AS YEAR, AG.AGE_GROUP, COALESCE(TB.usercount, 0) AS usercount
FROM (
SELECT YEAR, AGE_GROUP, SUM(USERS) as usercount,
FROM USERS
WHERE YEAR = '2014'
AND PRIMARY_GROUP = 'NT'
GROUP BY YEAR, AGE_GROUP
) AS TB
RIGHT JOIN AGEGROUPS AG ON TB.AGE_GROUP=AG.AGE_GROUP
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)