ORACLEの11において、
以下のようなSQLで、ORDER BYの有無で処理結果の列が表示されたりNULLになったりする現象が発生しています。
自分の認識ではORDER BYの有無で取得される内容が変わることはないはずなのですが、こういったことはありえるのでしょうか?
SELECT
--取得するのは以下の3項目のみ
T1.TCODE COL1
, T2.USERC COL2
, T2.USERNAME COL3
FROM
TABLE01 T1
LEFT JOIN TABLE02 T2
ON T1.USERC = T2.USERC
WHERE
T1.SDATE >= '20210201'
AND T1.SDATE <= '20210215'
-- ORDER BY T1.TCODE ★このORDER BY を付けた場合と外した場合で以下のように結果が異なる
※ORDER BY を付けた場合
COL1 COL2 COL3
111 221 331
112 222 332
113 223 333
※ORDER BY を付けない場合
COL1 COL2 COL3
113 NULL NULL
111 221 331
112 NULL NULL
T1.USERC も出力対象にしたらどうなるんでしょうか?
実際の結果をそのまま張り付けたものが以下です。(ORDER BY なしのほうは、エクセルで並び替えました)
T1.TCODE, T1.USERC, T2.USERC, USERNAME
※ORDER BY あり ※ORDER BY なし
132 8111 8111 test 132 8111 8111 test
266 8111 8111 test 266 8111 8111 test
267 8111 8111 test 267 8111 (NULL) (NULL)
268 8111 8111 test 268 8111 8111 test
270 8111 8111 test 270 8111 (NULL) (NULL)
273 8111 8111 test 273 8111 (NULL) (NULL)
276 8111 8111 test 276 8111 8111 test
280 8111 8111 test 280 8111 8111 test
283 8111 8111 test 283 8111 (NULL) (NULL)
285 8111 8111 test 285 8111 8111 test
286 8111 8111 test 286 8111 8111 test
289 8111 8111 test 289 8111 8111 test
291 8111 8111 test 291 8111 8111 test
314 8111 8111 test 314 8111 8111 test