0

elig(mID, startDate, endDate) と claim(mID, serviceDate) の 2 つのテーブルがあります。serviceDate が startDate と endDate の間にあるかどうかを確認し、新しいテーブル hasClaim(mID,startDate,endDate,Flag) に挿入する必要があります。条件が満たされた場合、フラグは「Y」に設定され、そうでない場合は「N」に設定されます。私がやったことは次のとおりです。

INSERT INTO hasClaim (mID, startDate, endDate, has_claim)  
SELECT e.mID, e.startDate, e.endDate, 'Y' 
FROM elig e 
inner JOIN claim c 
ON e.mID=c.mID 
WHERE c.serviceDate BETWEEN e.startDate AND e.endDate

ただし、これは serviceDate が startDate と endDate の間にあり、フラグが「Y」に設定されている値のみを返します。他の値も取得してフラグを「N」に設定するにはどうすればよいですか? オラクルを使用しています。

4

1 に答える 1

2

試す:

INSERT INTO hasClaim (mID, startDate, endDate, has_claim)  
SELECT e.mID, 
       e.startDate, 
       e.endDate, 
       CASE 
          WHEN c.serviceDate BETWEEN e.startDate AND e.endDate
          THEN 'Y'
          ELSE 'N'
       END AS has_claim
FROM elig e 
inner JOIN claim c 
ON e.mID=c.mID;

これは、検索された caseステートメントを使用します (10g ドキュメントからのものですが、11g でも同じです)。

于 2015-06-17T12:42:14.330 に答える