2016-04-14 6 views
0

することにより、グループでは動作しない場合:条件は、私がこの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の11グラムR2(Linux)の上を。

私は5行が返されると思います。このように:

what I wanted

しかし、最終的に、私は3行が返されます:

wrong result

何が起こっていますか?

答えて

0

欠落している2行がsj_gsidにNULLを持つため、3行しか返されません。 NULL <> '5300'はTRUEではなくUNKNOWNであり、条件がTRUEの行だけが返されることを理解していますか?それらを含める場合は、whereの条件にを追加する必要があります。

+0

はい、はい。私はもっ​​と注意する必要があります。ありがとうございます。 – raphael

関連する問題