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
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 original
SELECT 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.