Buenas noches....
Estimados Foristas Experos en SQL SERVER.
Tanto buscar y buscar, no encuentro una solución específica, o únicamente, algo que me oriente a terminar mi reporte necesario para mi pequeño Restaurant.
Lo único que me hace falta, es sacar el promedio y que la sintaxis nombrada, funcione para SQL SERVER 2005, ya que en 2008 funciona perfecto.
Si de algunos de ustedes, se ofrecen a prestar una ayuda comunitaria, estaría agradecido.
Lo primero:
Código MySQL:
Ver original
FROM NUEVO_REST_IKEA.DBO.IkeaHorasReporteAgrupado
))AS VARCHAR(10)) + '%' /*CONVERT(VARCHAR(10),SUM(TIQUETSCAB.NUMCOMENSALES) * 100 / 300) + '%' AS 'PROMEDIO'*/
FROM NUEVO_REST_IKEA.DBO.IkeaHorasReporteAgrupado
)) /*NUMERIC = LO MISMO QUE DECIMAL */
FROM NUEVO_REST_IKEA.DBO.IkeaHorasReporteAgrupado
)) /*=(B1*100/(B1+B2+B3)) */
SUM(COMENSALES
) AS 'COMENSALES' FROM NUEVO_REST_IKEA.DBO.IkeaHorasReporteAgrupado
Fíjense en la línea Número 9.
Me da el error mostrado:
ERROR no se puede convertir datos varchar a numeric
¿Por qué? En la línea 5 no me ofreció inconveniente, y aquí si.
Al parecer no estoy haciendo la conversión verdadara O NO se le añade caracteres a números decimales.
Lo segundo:
Código SQL:
Ver originalSELECT CASE REGIMEN
WHEN 1 THEN 'DESAYUNO'
WHEN 2 THEN 'ALMUERZO'
WHEN 3 THEN 'CENA' ELSE 'FUERA DE RANGO'
END "REGIMEN",
CONVERT(VARCHAR(10),SUM(BASEIMPONIBLE)) + ' Bs.' AS 'BASE IMPONIBLE',
CASE
WHEN REGIMEN = 1 THEN CAST(CONVERT(DECIMAL(10,2),SUM(BASEIMPONIBLE) * 100 / (SELECT SUM(BASEIMPONIBLE)
FROM NUEVO_REST_IKEA.DBO.IkeaHorasReporteAgrupado WHERE FECHA >= '20130101' AND FECHA <= '20130131'))AS VARCHAR(10))
/*CONVERT(VARCHAR(10),SUM(TIQUETSCAB.NUMCOMENSALES) * 100 / 300) + '%' AS 'PROMEDIO'*/
WHEN REGIMEN = 2 THEN CAST(CONVERT(DECIMAL(10,2),SUM(BASEIMPONIBLE) * 100 / (SELECT SUM(BASEIMPONIBLE)
FROM NUEVO_REST_IKEA.DBO.IkeaHorasReporteAgrupado WHERE FECHA >= '20130101' AND FECHA <= '20130131'))AS VARCHAR(10))
/*NUMERIC = LO MISMO QUE NUMERIC */
WHEN REGIMEN = 3 THEN CAST(CONVERT(DECIMAL(10,2),SUM(BASEIMPONIBLE) * 100 / (SELECT SUM(BASEIMPONIBLE)
FROM NUEVO_REST_IKEA.DBO.IkeaHorasReporteAgrupado WHERE FECHA >= '20130101' AND FECHA <= '20130131'))AS VARCHAR(10))
/*=(B1*100/(B1+B2+B3)) */
END "PROMEDIO"
FROM IkeaHorasReporteAGrupado
WHERE FECHA >= '20130101' AND FECHA <= '20130131'
GROUP BY REGIMEN ORDER BY SUM(BASEIMPONIBLE) ASC
La sintaxis funciona correctamente (ya cuando desistí de agregarle el % adicional). Únicamente que en SQL 2005, no me funciona.
Comenta algo sobre la cláusala WHERE con EXISTS tal... ¿Será por los SELECT´s anidados? Quitándolo, me funciona.
Ahí ustedes pueden ver la conversión o el promedio que se le saca al 100%.
Agradecidos por sus comentarios y objeciones.
Saludos.