2013-07-09 1 views
0

У меня есть таблица с несколькими столбцами. Скажем, столбцы являются C1, C2, C3 и C4.Нужно запрашивать данные из таблицы с помощью функции nvl

C1 contains daytime, 
C2 contains names, 
C3 is the numeric values and 
C4 have 2 values repeatedly say a and b. 

Теперь мне нужно запрашивать данные таким образом, что для дневного времени, значение присутствует в С3, соответствующий a.C4 должен быть возвращен. Если C3 не имеет значения для a.C4, он должен дать мне значение в C3 для b.C4.

+0

К сожалению, я не понимаю, можете ли вы привести пример с исходными данными и данными результата ?. Например, я не понимаю, почему вы можете иметь два значения в одном столбце C4? Благодарю. –

ответ

0

ли ваши данные выглядеть примерно так:

Jan12, Tom, 1, a 
Jan12, Tom, 2, b 
Jan13, Bob, 3, a 
Jan14, Sue, 4, b 

Я думаю, что вы говорите, что вы хотите запустить (Query 1):

SELECT C3 from TBL WHERE C1=<Datetime> and C4='a' and C3 is not null 

Однако, если запись не найдена, (Запрос 2):

SELECT C3 from TBL WHERE C1=<Datetime> and C4='b' 

Если это ваша цель, рассмотрите второй запрос. Для того, чтобы оставить что-нибудь, что бы возвращенную запись с помощью первого запроса, вы можете сделать это (примечание модифицирована второй запрос только) (Query 2A):

SELECT C3 from TBL WHERE C1=<Datetime> and C4='b' 
    and NOT EXISTS (SELECT * from TBL WHERE C1=<Datetime> and C4='a') 

Итак, теперь у вас есть два запроса, с взаимоисключающими Результаты. Вы можете просто объединить их вместе и запустить их как один (Final, объединенный запрос).

SELECT C3 from TBL WHERE C1=<Datetime> and C4='a' and C3 is not null 
UNION ALL 
SELECT C3 from TBL WHERE C1=<Datetime> and C4='b' 
    and NOT EXISTS (SELECT * from TBL WHERE C1=<Datetime> and C4='a') 
+0

Привет, Да, это то, что требуется. Но я не получаю результата по своему желанию. Это дает мне значения из C3 для C4 = a и не собирается C4 = b, даже если значение в C3 для C4 = a пусто. – user2563162

+0

Итак, вы говорите, что вы также хотите исключить что-либо из «Query 1», если C3 «пуст». «Пустое» означает «нуль»? Предполагая, что это то, что вы имеете в виду, я изменил запрос выше. Если вы понимаете принцип за этим, вы должны быть в состоянии настроить его, чтобы делать то, что вы хотите. –

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

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