将不存在的数据添加到SQL查询

将不存在的数据添加到SQL查询,sql,sql-server,Sql,Sql Server,我的SQL查询返回以下结果(): xy计数 ----------- ----------- ----------- 1 1 10 1 2 2 2 4 3 2 5 5 4 1 5 5 1 8 我想要的是x,y应该始终包含1到5个值,即使查询没有返回它们,在上面

我的SQL查询返回以下结果():

xy计数
----------- ----------- -----------
1           1           10
1           2           2
2           4           3
2           5           5
4           1           5
5           1           8
我想要的是x,y应该始终包含1到5个值,即使查询没有返回它们,在上面的场景中,x缺少3个值。如何在此处添加介于1和5之间的缺失值

提前感谢

首先,您需要生成所需的数据。您可以使用数字表来进行此操作。使用
交叉联接
生成两个表的所有可能组合。最后,
OUTER将生成的数据与表连接起来

在下面的查询中,我使用union构建了一个数字列表,而不是从表中获取它们。但想法仍然是一样的:

SELECT XList.x, YList.y, #temp.count
FROM (
    SELECT 1 AS x UNION ALL
    SELECT 2      UNION ALL
    SELECT 3      UNION ALL
    SELECT 4      UNION ALL
    SELECT 5
) AS XList 
CROSS JOIN (
    SELECT 1 AS y UNION ALL
    SELECT 2      UNION ALL
    SELECT 3      UNION ALL
    SELECT 4      UNION ALL
    SELECT 5
) AS YList
LEFT JOIN #temp ON XList.x = #temp.x AND YList.y = #temp.y
结果:

xy计数
----------- ----------- -----------
1           1           10
2 1空
3.1无效
4           1           5
5           1           8
1           2           2
2空
3.2无效
4.2无效
5.2无效
13无效
2 3无效
3 3无效
4.3无效
5.3无效
14空
2           4           3
3.4无效
4无效
5.4无效
15无效
2           5           5
3.5无效
4.5无效
5无效

您可以这样做:

select t1.x, t2.y, s.count from 
(values(1),(2),(3),(4),(5)) t1(x) cross join
(values(1),(2),(3),(4),(5)) t2(y)  
left join #temp s on t1.x = s.x and t2.y = s.y

嗨,萨尔曼,这很接近,但我也想有一个Y值,0到5的任何一个值,请告诉我如何修改你的查询以得到它。非常感谢,你能解释一下你的疑问吗。我是SQL新手。预期的结果是什么。我猜结果将有30行。当5*5=25时,正好有25行…但只有少数组合的值剩余零或空(即计数值)如何接受这两个答案?这两种方法对我都有效,非常感谢:)嗨,很接近,我也需要对Y列应用相同的方法,我用它在图表上绘制这些值,即5*5=25,所以我必须得到所有的组合,如果一个组合没有计数,它应该返回null或零。。。感谢您响应添加了该功能。@GeekExplorer您不能。但你可以投票支持我both@Giorgi,我已经从查询中生成了相同的结果集,如何使用该结果集来完成相同的操作……就像我从查询中得到10条记录一样,现在我应该得到25条记录。@GeekExplorer,来自answer的查询应该至少提供25行