2011-01-04 22 views
12

Quiero obtener la tasa de disponibilidad para los 12 meses de nuestra tabla de tarifas y dividirla por meses, comencé a escribir una selección de SQL con mayúscula, pero parece que estoy haciendo algo mal en el " entre" part..here es mi SQLUsando BETWEEN en la sentencia CASE SQL

SELECT AVG(SELL_RATE), 
     AVG(BUY_RATE), 
     CASE MONTHS 
      WHEN RATE_DATE(BETWEEN '2010-01-01' AND '2010-01-31') THEN 'JANUARY' 
      ELSE 'NOTHING' 
    END AS 'MONTHS' 
FROM RATE 
WHERE CURRENCY_ID = CURRENCY -033' 

Respuesta

30

Sacar los meses de su caso, y quitar los soportes ... como esto:

CASE 
    WHEN RATE_DATE BETWEEN '2010-01-01' AND '2010-01-31' THEN 'JANUARY' 
    ELSE 'NOTHING' 
END AS 'MONTHS' 

Usted puede pensar en esto como equivalente a:

CASE TRUE 
    WHEN RATE_DATE BETWEEN '2010-01-01' AND '2010-01-31' THEN 'JANUARY' 
    ELSE 'NOTHING' 
END AS 'MONTHS' 
+0

Cómo usarlo para un rango entero –

0

No se especifica qué cree que está mal pero puede en sí dos peligros:

ENTRE puede ser implementado de manera diferente en diferentes bases de datos a veces se está incluyendo a los límites que a veces excluidos, lo que resulta en que el 1 y el 31 de enero terminaría NADA. Debes probar cómo tu base de datos hace esto.

Además, si RATE_DATE contiene horas también 2010-01-31 podría traducirse a 2010-01-31 00:00, lo que también excluiría cualquier fila con una hora distinta a 00:00.

+0

lo siento estoy usando MS SQL 2005, el problema con la consulta es que no devuelve ningún resultado, ¿ves algo incorrecto en él? SELECT AVG (cr.SELL_TRANSFER) AS SELL, CASO CUANDO cr.RATE_DATE ENTRE '02 -10-2008' Y '30 -10 a 2008' y luego 'enero' FIN AS 'MES' DE cr CURRENCY_RATE DONDE cr .CURRENCY_ID = 'CURRENCY -033' GROUP BY CR.RATE_DATE – andreas

+1

Comience por seleccionar la consulta para SELECCIONAR * FROM y trabajar para recuperar las filas, de esa forma puede concentrarse en la parte where e ir a la selección cuando tenga alguna datos. Si aún no puede generar ningún resultado, incluya unas pocas filas de la tabla que cree que deberían coincidir para que podamos probar esto. –

Cuestiones relacionadas