2015-03-23 3 views
0

Я пытаюсь воссоздать следующую вложенная IF заявление, что я использую в первенствует в запросе SQL:Вложенный IF заявление в SQL

= IF (± 20 = «», 0, IF (AH20 = «», IF (AG20 = "", IF (AF20 = "", IF (AE20 = "", "", AE20), AF20), AG20), AH20))

Я провел некоторое исследование, и кажется, что я нужно использовать CASE, но в примерах, которые я нашел, я все еще не могу подключить точки к правильному синтаксису для использования, учитывая пример выше.

Я предположил, что это было бы начать как

Select Case Когда ex_table.AE = ""

, и я не уверен, куда идти оттуда. Я ценю вашу помощь!

EDIT

MySQL таблица называется best_estimate.

У меня есть следующие поля: JCE_TOTAL, CDSI_TOTAL, INITIAL_TOTAL and FINAL_TOTAL.

Я хочу, чтобы мой SQL-запрос проходил через эти столбцы и выбирал самое последнее доступное значение (значения становятся доступными со временем в указанном выше порядке).

Если в FINAL_TOTAL есть значение, оно должно выбрать значение в FINAL_TOTAL.

Если FINAL_TOTAL пуст, но в INITIAL_TOTAL есть значение, оно должно выбрать это значение.

Если эти два поля являются пустыми, но CDSI_TOTAL имеет значение, он должен выбрать CDSI_TOTAL и т.д.

Если все поля пустые, то результат должен быть 0

+0

, что ваш MySQL имя и структура таблицы? – Alex

+0

Таблица mysql называется best_estimate. У меня есть следующие поля: JCE_TOTAL, CDSI_TOTAL, INITIAL_TOTAL и FINAL_TOTAL. Я хочу, чтобы мой SQL-запрос проходил через эти столбцы и выбирал самое последнее доступное значение (значения становятся доступными с течением времени, в порядке, указанном выше). Если в FINAL_TOTAL есть значение, оно должно выбрать значение в FINAL_TOTAL. Если FINAL_TOTAL пуст, но в INITIAL_TOTAL есть значение, оно должно выбрать это значение. Если эти два поля являются пустыми, но CDSI_TOTAL имеет значение, он должен выбрать CDSI_TOTAL и т. Д. Если все поля пустые, результат должен быть 0. – sqlnewb

+0

Проверить обновление моего ответа – Alex

ответ

1

Если я получил вашу цель правильно, вам не нужно делать это мега вложенное CASE statment. Существует много проще способ:

SELECT COALESCE(AE, AH, AG, ...) AS my_value 
FROM my_table 

так согласно yuor комментарий Ваш запрос может быть как:

SELECT COALESCE(FINAL_TOTAL, INITIAL_TOTAL, CDSI_TOTAL, JCE_TOTAL, 0) AS my_value 
FROM best_estimate 

EDIT

SELECT 
    OFS_ID, 
    COALESCE(FINAL_TOTAL, INITIAL_TOTAL, CDSI_TOTAL, JCE_TOTAL, 0) AS my_value 
FROM best_estimate 
+0

У меня просто не хватило символов, оставшихся до добавьте бит примерно в JCE_TOTAL, мне нужно включить его в мои вычисления. Благодаря! – sqlnewb

+0

Спасибо, Алекс. Это сработало отлично! – sqlnewb

+0

добро пожаловать :-) – Alex

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