0

我有两个表 elig(mID, startDate, endDate) 和 claim(mID, serviceDate)。我必须检查 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 回答