2014-06-07 23 views
0

有没有办法填充select语句的结果中省略的行?填写'select'语句的结果中省略的行

我的数据是这样的:

person,day 
1,20 
1,24 

...这是一个简单的查询返回的是这样的:

select * 
from example_table 
where day>=20 

想我要的是添加行的缺失天所以结果看起来像这样:

person,day 
1,20 
1,21 
1,22 
1,23 
1,24 

有没有办法通过SQL来做到这一点?

+0

'SELECT人,一天FROM表 UNION SELECT '1', '12' FROM table'。喜欢这个 ? – potashin

+2

你使用的是什么RDBMS? – Mureinik

+0

我正在使用黑斑羚。所以,请不要使用窗口功能。 – MarsaPalas

回答

0

一个解决方案是一个帮助表,其中一个整数列的值为1到最大值(31?)。

select person, day 
from yourtable 
UNION ALL 
select intcol, 
from helptable h 
where not exists (select day from yourtable y where y.day = h.helptable); 
+0

是的,这可能是解决方案,但用户表是巨大的,日期表也是巨大的,做交叉连接,以帮助表...这不会工作:( – MarsaPalas

+0

你不能避免在这个问题中使用帮助表。帮助表可以动态生成,而不是永久存储。 –