2017-12-13 11 views
0

CompletedDateにNull値があるサブクエリがあります.tht null値にnull値で出力します。サブクエリのヌル値

 select * from Crew c 
where 

a.CrewDate > '2016/12/22 00:00:00' 
    and ActionTypeID = 20 
--- and objectid = 73658 
    AND CrewDate IN (SELECT MAX(CrewDate) FROM Crew cc WHERE c.ObjectID = 
    cc.ObjectID 
    AND cc.crewTypeID = 20 
    ) 
**AND A.CompletedDate IN (SELECT MAX(CompletedDate) FROM crew cc WHERE 
c.ObjectID = cc.ObjectID 
AND AA.ActionTypeID = 20** 
) 
    order by ObjectID 

oBJECTid  CompletedDate    Createddate 
1445209  2017-01-04 09:36:30   2016-12-22 00:00:03 
3145514  2017-01-30 15:43:02   2016-12-22 00:00:03 
2778154  NULL       2016-12-22 00:00:03 
3025853  2017-01-30 15:43:02   2016-12-22 00:00:03 
2342785  2017-03-03 12:02:17   2016-12-22 00:00:03 
3113524  NULL       2016-12-22 08:04:58 
3198917  2017-08-16 07:38:29   2016-12-22 08:06:08 
1245218  NULL       2016-12-22 08:12:20 
3433585  NULL       2016-12-22 08:14:35 

瞬間に私のクエリは、NULL値を取り出すが、私は、出力

+1

あなたは意味 – Steven

+0

一部のデータと予想される出力を示し、A.CompletedDate IN(SELEC T MAX(完了日)FROM crew cc WHERE c.ObjectID = cc.ObjectID およびAA.ActionTypeID = 20 ** )またはA.CompletedDateがNULLですか?または、nullでも構いませんが、AA.ActionTypeID = 20も可能ですか?説明してください。 – MiloBellano

+0

@MiloBellanoは、complteddateがnullまたはnullでないサブクエリで – Skorpion

答えて

0

でnull値を必要とする私が正しくあなたの問題を理解していれば、あなたはLEFT JOINサブクエリの代わりINサブクエリ

を使用する必要があります

次のSQLコードを確認してください:**

SELECT 
    c.ObjectID, 
    cc.MaxCrewDate, 
    cd.MaxCompletedDate 
FROM Crew c 
LEFT JOIN 
(
    SELECT 
     cc.ObjectID 
     MAX(cc.CrewDate) AS MaxCrewDate 
    FROM Crew cc 
    WHERE cc.crewTypeID = 20 
    GROUP BY cc.ObjectID 
) AS cc ON cc.ObjectID = c.ObjectID 
LEFT JOIN 
(
    SELECT 
     cd.ObjectID, 
     MAX(CompletedDate) AS MaxCompletedDate 
    FROM Crew cd 
    WHERE cd.ActionTypeID = 20 
    GROUP BY cd.ObjectID 
) AS cd ON cd.ObjectID = c.ObjectID 
+0

そのobjectidが重複しているのはなぜですか?なぜ私はIN節を歌っていたのですか? – Skorpion