Tenga paciencia con esto, esto es bastante difícil de explicar y no estoy seguro si estoy usando la terminología correcta.SQL: Selección condicional dentro de Conditional Select
Necesito hacer una selección algo complicada. En realidad, es una declaración select que decide condicionalmente qué campo usar para filtrar la selección. Si un determinado campo de fecha no es nulo, necesito verificar que el valor en ese campo esté dentro de un cierto rango. De lo contrario, si ese campo de fecha es nulo necesito comprobar otro campo, el campo int, en la misma mesa se encuentra dentro de un cierto rango:
Pseudocódigo:
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
Mi intento actual:
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'
¿Alguna idea? Pregunte si necesita más información. Gracias de antemano.
por favor revise mi edición – gbn
Yup. Aclamaciones. Originalmente tenía un enunciado o, pero el campo entero se arrastraba incluso si el campo de fecha contenía datos, pero simplemente no estaba dentro del rango. ¡No pensé en agregar un cheque nulo allí! ¡Ay! – Damien