运行此SQL时出现问题:
Create Table test_temp (
gsid Number,
sl Number);
Insert Into test_temp Values(53010100,15);
Insert Into test_temp Values(53010000,10);
Insert Into test_temp Values(53000000,5);
Select * From (
Select Sum(sl), gsid, substr(gsid, 0, 4) sj_gsid, substr(gsid, 0, 2) pro_gsid
From test_temp
Group By Rollup(substr(gsid, 0, 2), substr(gsid, 0, 4), gsid))
Where sj_gsid <>'5300'
在Oracle 11g R2(Linux)上。
我认为会有5行返回。像这样:
但是,最后,我得到3行返回:
发生了什么事?
答案 0 :(得分:0)
您只返回三行,因为您丢失的两行对于sj_gsid为NULL。你明白NULL&lt;&gt; &#39; 5300&#39;不是TRUE,而是UNKNOWN,只返回条件为TRUE的行,对吗?如果您希望包含这些内容,则必须将make_operator(op, *args, doSave=True)
添加到or sj_gsid is null
条件