2015-06-17 8 views
0

У меня есть две таблицы elig (mID, startDate, endDate) и требование (mID, serviceDate). Я должен проверить, является ли serviceDate между startDate и endDate и вставляет в новую таблицу hasClaim (mID, startDate, endDate, Flag). Флаг должен быть установлен в «Y», если условие выполнено и «N» в противном случае. То, что я сделал это:Использование условия if-else внутри блока insert-select

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»? Я использую оракул.

ответ

2

Try:

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; 

Это использует searched case заявление (от 10г документации, но это же в 11g).

+1

Работает отлично. Благодарю. – BinaryTerror

 Смежные вопросы

  • Нет связанных вопросов^_^