Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.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 按多个列分组,所有列的计数均为0_Sql_Sql Server_Group By_Aggregate - Fatal编程技术网

Sql 按多个列分组,所有列的计数均为0

Sql 按多个列分组,所有列的计数均为0,sql,sql-server,group-by,aggregate,Sql,Sql Server,Group By,Aggregate,我有一个查询,如果在group by上找不到记录,它必须返回计数0。但我得到的是空洞的结果 SELECT DATEPART(YEAR, s.CreatedAt) AS 'Year',DATEPART(MONTH, s.CreatedAt) AS 'Month', count(*) AS 'count' FROM table1 t1 JOIN table2 t2 on t1.id = t2.id WHERE t1.Id IN ( SELECT id FROM table3 WHERE Id IN

我有一个查询,如果在group by上找不到记录,它必须返回计数0。但我得到的是空洞的结果

SELECT DATEPART(YEAR, s.CreatedAt) AS 'Year',DATEPART(MONTH, s.CreatedAt) AS 
'Month', count(*) AS 'count'
FROM table1 t1
JOIN table2 t2 on t1.id = t2.id
WHERE t1.Id IN (
SELECT id FROM table3 WHERE Id IN (
SELECT id FROM table4 WHERE Gradingresult LIKE '%abcd%'
GROUP BY id
)) AND t1.column1 LIKE 'hello' AND t1.column2='world' AND t2.column1 != 
'somestring' 
AND t1.CreatedAt BETWEEN  DATEADD(YEAR, -1, GETDATE()) AND GETDATE() 
GROUP BY DATEPART(YEAR, t1.CreatedAt), DATEPART(MONTH, t1.CreatedAt)
我希望它像下面这样显示

    year month      count
    2019    2         0
    2019    4         0
    2018    7         0
但我得到的结果如下

    year   month    count
这里什么都没有,没有行

我尝试过不同的方法,如case语句、isnull()、left join和其他方法,但都没有得到想要的结果

编辑 我也考虑过这一年 更新了我的实际查询,如果我没有包括t2。column1条件,我得到的结果如下

    year  month   count
    2019  5        10
    2019  4        25
    2019  2         9
    2018  10       19        

如果我包含上述指定条件,我将获得所需的结果

如果表中没有行,则结果集中没有行。您可以使用
左联接
获取所需的行:

select v.mon, count(t.createdat)
from (values (2), (4), (7)) v(mon) left join
     tableT t
     on month(t.createdat) = v.mon
group by v.mon
order by v.mon;

你需要非常小心地使用这个公式,因为你没有包括年份。处理月份时,通常也应考虑年份。

有一个返回1-12的帮助表(或递归cte)。外部连接。可能是@jarlh的副本,使用cte,我能够实现它。我也在考虑年份,但我没有在问题中指定,但仍然是空的result@JyothiPrakash . . . 这不能返回带有
左联接的空结果。感谢您根据您的建议进行了一些修改后,它工作了