Hola a todos y solucion a consolidar cantidades por fecha.

Presentaciones - Mensajes de Bienvenida - Mensagem de Boas-vindas
jtoobe
Mensajes: 1
Registrado: 17 May 2017, 21:55

Hola a todos y solucion a consolidar cantidades por fecha.

Mensaje por jtoobe »

Hola a todos !!! Muy buena la comunidad y me aporta muchas soluciones en mi trabajo diario. Soy de Argentina y mi trabajo principal es el de Administrador de servidores Unix/linux/Solaris y tambien ejecuto algunos desarrollos en Autoit.

Quiero aportar una solucion al problema de consolidar datos por fechas, como por ejemplo montos de venta con meses en los que no hay resultados, en consultas ejecutadas a BD Mysql y resueltas en Autoit.

; inicializo un array para dejar los datos

$arrayConDatos[13]

; lleno con cero cada valor

For $i = 0 To 12

$arrayConDatos[$i] = 0

Next

; armo la consulta a la BD

$SQLCode2 = "select a.cant,a.ano, a.mes , TIMESTAMPDIFF(MONTH,concat(a.ano,'-',a.mes,'-01'),curdate()) as indice from ("
$SQLCode2 = $SQLCode2 & " select count(*) as cant, month(fecha) as mes , year(fecha) as ano"
$SQLCode2 = $SQLCode2 & " from venta"
$SQLCode2 = $SQLCode2 & " where codigo='CD001'"
$SQLCode2 = $SQLCode2 & " group by month(fecha),year(fecha) order by fecha desc LIMIT 12) a order by a.ano,a.mes"

;El limit 12 es porque lo limito al ultimo año

; ejecuto la consulta

_MySQL_Real_Query($SQLInstance, $SQLCode2)
$res = _MySQL_Store_Result($SQLInstance)
$fields = _MySQL_Num_Fields($res)
$rows = _MySQL_Num_Rows($res)
_MySQL_Data_Seek($res, 0) ;para volver a empezar de cero
$iFields = _MySQL_Num_Fields($res)


While $iFields > 0
$asRow2 = _MySQL_Fetch_Row_StringArray($res, $iFields)

If @error Then ExitLoop

; $asRow2[3] contiene el numero de mes y lo uso como indice del array donde dejo la cantidad
; $asRow2[3] contiene la cantidad sumada

$arrayConDatos[$asRow2[3]] = $asRow2[0]



WEnd

; luego invierto el array con los datos para que me quede ordenado por mes

_ArrayReverse($arrayConDatos)


Saludos !!!!!
Responder