SQL: условный выбор в рамках условного выбора

Пожалуйста, подождите, это довольно сложно объяснить, и я не уверен, что использую правильную терминологию.

Мне нужно сделать довольно сложный выбор. По сути, это оператор выбора, который условно решает, какое поле использовать для фильтрации выбора. Если определенное поле даты не равно нулю, мне нужно проверить, находится ли значение в этом поле в определенном диапазоне. В противном случае, если это поле даты имеет значение null, мне нужно проверить другое поле, int field, в той же таблице, находится в пределах определенного диапазона:

Псевдокод:

If [Date] is not null
    Get sum (table.value) for rows Date >= dateValue and Date < dateValue
Else
    Get sum (table.value) for rows Int >= intValue and Int < intValue

Моя текущая попытка:

SELECT CASE WHEN a.Date IS NOT NULL THEN 
(SUM(CASE WHEN (a.Date >= cal.Date) THEN ABS(a.Value) ELSE 0 END)) 
ELSE 
(SUM(CASE WHEN (b.Days >= 0) THEN ABS(a.Value) ELSE 0 END) 
END AS 'A'

Есть идеи? Спросите, нужна ли вам дополнительная информация. Мне нужно проверить, что значение в этом поле находится в определенном диапазоне. В противном случае, если это поле даты имеет значение null, мне нужно проверить другое поле, int field, в той же таблице, находится в пределах определенного диапазона:

Псевдокод:

If [Date] is not null
    Get sum (table.value) for rows Date >= dateValue and Date < dateValue
Else
    Get sum (table.value) for rows Int >= intValue and Int < intValue

Моя текущая попытка:

SELECT CASE WHEN a.Date IS NOT NULL THEN 
(SUM(CASE WHEN (a.Date >= cal.Date) THEN ABS(a.Value) ELSE 0 END)) 
ELSE 
(SUM(CASE WHEN (b.Days >= 0) THEN ABS(a.Value) ELSE 0 END) 
END AS 'A'

Есть идеи? Спросите, нужна ли вам дополнительная информация. Мне нужно проверить, что значение в этом поле находится в определенном диапазоне. В противном случае, если это поле даты имеет значение null, мне нужно проверить другое поле, int field, в той же таблице, находится в пределах определенного диапазона:

Псевдокод:

If [Date] is not null
    Get sum (table.value) for rows Date >= dateValue and Date < dateValue
Else
    Get sum (table.value) for rows Int >= intValue and Int < intValue

Моя текущая попытка:

SELECT CASE WHEN a.Date IS NOT NULL THEN 
(SUM(CASE WHEN (a.Date >= cal.Date) THEN ABS(a.Value) ELSE 0 END)) 
ELSE 
(SUM(CASE WHEN (b.Days >= 0) THEN ABS(a.Value) ELSE 0 END) 
END AS 'A'

Есть идеи? Спросите, нужна ли вам дополнительная информация. Заранее спасибо.

6
задан gbn 2 November 2010 в 20:52
поделиться