予期しない結果を返す非常に単純なサブクエリをMS SQLで作成しています。私が返そうとしているのは、ある期間に存在するが他の期間には存在しないacct番号のリストです。私の最初のクエリ(以下に貼り付け)は予期しないゼロの行を返しました。奇妙な結果を返すSQLサブクエリ
select
name1.acct
from
sym.dbo.name as name1
where
name1.processdate = 20171130
and name1.type = 0
and name1.acct not in
(
select
name2.acct
from
sym.dbo.name as name2
where
name2.type = 0
and name2.processdate = 20171031
)
私は、サブクエリへのロジックの1つの余分の行を追加して実行する場合しかし、期待される結果は以下を参照してください、私に返されます。
select
name1.acct
from
sym.dbo.name as name1
where
name1.processdate = 20171130
and name1.type = 0
and name1.acct not in
(
select
name2.acct
from
sym.dbo.name as name2
where
name2.type = 0
and name2.processdate = 20171031
and name2.acct <> '8888888'
)
は最初私はそれがデータに関連する可能性が考え私はVARCHARにACCT番号を変換しようとしたと同じ結果(対照としてキャストに変換を使用して)とint型。誰かが私に理由を説明することができますなぜクエリ1はゼロ結果を返し、クエリ2は期待された結果を返しましたか?私は、Microsoft SQL Management Studioを使用してい
おかげ
はあなたが両方のクエリの結果を見ているものを検証するために、サンプルデータを表示することができますか? –
日付の代わりに日付または日時のデータ型を使用することを検討してください。 –