2

とがその特定のレコードを持っているときに、RepDailyInfoテーブルから日付を取得しようとしています。これはSQLServer2005で可能ですか?RepDailyCollection.IsReceived = 0RepDailyCollectionRepDailyInfoID

Select distinct RepDailyInfo.Date 
from RepDailyInfo 
left outer join RepDailyCollection c 
    on c.RepDailyInfoID = RepDailyInfo.RepDailyInfoID
where c.IsReceived = 0 
    or c.IsReceived = null
4

4 に答える 4

1

条件を結合の句に移動します。それ以外の場合は、句ONで参照される行の行を見つけるために結合が必要になるためです。WHERE

Select distinct RepDailyInfo.Date 
from RepDailyInfo 
left outer join RepDailyCollection c 
    on c.RepDailyInfoID = RepDailyInfo.RepDailyInfoID
    and (c.IsReceived = 0 or c.IsReceived is null)

orまた、SQLでは「または」が「および」よりも優先され、角かっこがないと「(AおよびB)またはC」になるため、角かっこを使用することに注意してください。

于 2012-04-11T20:01:00.810 に答える
0

あなたがしたいかもしれません

where IsNull(c.IsReceived,0) = 0
于 2012-04-11T20:00:35.240 に答える
0

はい。ただし、join自体でjoinの右側をフィルタリングする必要があります。

Select distinct RepDailyInfo.Date 
from RepDailyInfo 
left outer join RepDailyCollection c 
    on c.RepDailyInfoID = RepDailyInfo.RepDailyInfoID
   and (c.IsReceived = 0 
    or c.IsReceived is null)
于 2012-04-11T20:00:41.030 に答える
0

WHERE句は。の後にフィルタリングされますOUTER JOIN。その動作を望まない場合は、次のように、WHERE句をの句にON移動します。JOIN

select distinct r.date
from RepDailyInfo r
left outer join RepDailyCollection c on c.RepDailyInfoID = r.RepDailyInfoID
    and isnull(c.IsReceived, 0) = 0
于 2012-04-11T20:00:43.707 に答える