0

タイトルが紛らわしいのは承知していますが、programClosureDate. このクエリを実行できます:

CaseInfo Table
CaseID,
CaseNumber,
CaseName

CaseChild Table
CaseID,           FK to CaseInfo
ChildPartyID, FK to PartyID in Party table
ProgramClosureDate

Party Table
ID,
PartyID,
Firstname,
LastName

SELECT           ci.CaseNumber, ci.CaseName, p.firstname+' '+p.lastname AS child, 
                 ci.programClosureDate
FROM             CaseInfo ci JOIN
                 CaseChild cc ON ci.CaseID = cc.CaseID JOIN
                 Party p ON cc.ChildPartyID = p.PartyID

WHERE            cc.ProgramClosureDate IS NOT NULL                    
ORDER BY         ci.CaseName

しかし、これは programClosureDate IS NOT NULL を持つ子供を私に与えるだけです。
どんな助けでも大歓迎です。アンディ

4

3 に答える 3

0

この WHERE 条件を使用できます

Where CaseID not in (Select CaseID  from CaseChild ProgramClosureDate IS NULL )
于 2013-01-05T19:14:24.917 に答える
0

このクエリは、すべての子に閉鎖日があるケースを取得します。

select CaseId
from CaseChild cc
group by CaseId
having count(*) = count(cc.ProgramClosureDate)

ちょっとしたトリックを使っています。. . count(*)は各ケースのレコード数であり、count(cc.ProgramCLosureDate)NULL 以外の閉鎖日の数です。これらは、すべてのケースがクローズされた場合と同じです。

さらに情報が必要な場合は、次の情報に参加できます。

select ci.CaseNumber, ci.CaseName, p.firstname+' '+p.lastname AS child, 
       ci.programClosureDate
from (select CaseId
      from CaseChild cc
      group by CaseId
      having count(*) = count(cc.ProgramClosureDate)
     ) closed join
     CaseInfo ci
     on closed.CaseId = ci.CaseId join
     Party p
     ON cc.ChildPartyID = p.PartyID
order by ci.CaseName

上記のサブクエリは、クエリの残りの人口を定義するために使用されます。

于 2013-01-05T19:23:04.530 に答える