Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda con una consulta (Por favor) ~ (https://www.clubdelphi.com/foros/showthread.php?t=89493)

Malixnox 02-12-2015 19:55:06

Aja, sorry la tardanza, no solo ando de programador acá y recursos humanos ida y vuelva es media hora.

Visual Studios dice SQL Server 2012

La definición de la tabla es:

Código SQL [-]
TTYPE Varchar(2)
TTDTE Numeric(18,0)
TPROD Varchar (35)
THWRKC Numeric (28,0)
T1,T2 y T3 Numeric (38,6)

Explicación de cada una:

TTYPE es la que diferencia el tipo de producto definido por una o dos letras, I es para insumos, R para producción, DV es para rechazo y mas valores que tiene.
TTDTE es la fecha que es un número expresado en yyyyMMdd
TPROD sería quizás el Id, es un código que identifica qué es lo que se está produciendo, consumiendo, rechazando, etc - Tiene una simbología de que los códigos que comienzan por Q son para químicos, los que comienzan por S son producción y demás códigos que tiene.
THWRKC es el identificador de planta, en este caso es molinos y los molinos van del 431101 al 431106 respectivamente, hay otros códigos que son para planta destintado o cualquier otra, pero molinos son los que estoy usando.
T1, T2 y T3 son lo que consumió, gastó y rechazó cada turno, la suma de los 3 turnos sería el total del día.

El programa debería mostrar una columna con los TPROD de Químicos que son los que comienzan por Q, luego de eso las columnas con los 12 meses del año y una mas con el total del año, los resultados serían la suma de los T1, T2 y T3 para tener los resultados diarios pero acumulados para tener los totales del mes, ese resultado dividido entre el total de R sin ningún tipo de diferenciación de código, todas las R sumadas es la producción real del periodo, este caso todas las R del mes 01 serían la producción de enero, las R se dividen entre 1000 para dar la unidad y eso para todos los meses y códigos de los químicos.

Visto en fórmula sería

Cita:

Insumo de químicos = SUM(T1+T2+T3 de Código_químico1 del mes)/(Sum(R del mes)/1000) = Número kg/Ton
Espero haberme expresado un poco mas claro.

fjcg02 02-12-2015 23:05:32

Bueno, no puedes correr si no sabes andar...

Vamos por partes.

Vamos a sacar los insumos de los productos químicos del molino 431101.
TTYPE = 'I'
THWRKC= 431101
TPROD like 'Q%'
Además vamos a ver el consumo por cada día.

Código SQL [-]
Select 
TPROD, TTDTE,
T1, T2, T3
FROM BPCS_TRANS_ITH_2
WHERE
TTYPE = 'I'
AND THWRKC= 431101
AND TPROD like 'Q%'
Ahora sumando los insumos de los tres turnos
Código SQL [-]
Select 
TPROD, TTDTE,
T1, T2, T3, T1+T2+T3 as TOTAL_DIA
FROM BPCS_TRANS_ITH_2
WHERE
TTYPE = 'I'
AND THWRKC= 431101
AND TPROD like 'Q%'

Juega con estas consultas, cambiando los insumos por la producción TTYPE = 'R'. Haz variaciones, cambiando el molino, etc.


Cuando lo domines, iremos a calcular esos datos totalizados por día o por mes. De varios molinos, por ejemplo.

Un saludo

Malixnox 08-12-2015 14:09:50

No sabía que habían respondido, el correo no me avisó y como me tocó prestar servicio en las elecciones de mi país tampoco fui al trabajo unos días, disculpa, voy a probar qué logro con eso, gracias.

Creí que ya se habían rendido conmigo y yo bueh, quien sea se cansa de tanto noob.

Casimiro Notevi 08-12-2015 14:14:15

Cita:

Empezado por Malixnox (Mensaje 500304)
Creí que ya se habían rendido conmigo y yo bueh, quien sea se cansa de tanto noob.

Aquí solamente nos cansamos de los que quieren aprovecharse y no tratan de aprender. Nunca nos cansamos de los novatos que quieren aprender. Todos hemos sido novatos y seguimos siéndolo en muchas cosas.

Malixnox 08-12-2015 17:09:42

Ya resolví al parecer, les dejo el código por si a alguien le es de ayuda, un amigo me explicó por teléfono que existen sub select y tal, lo busqué y me funcionaron.

Código SQL [-]
SELECT        TPROD, 
SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '01%' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)
/(SELECT SUM(T1+T2+T3)/1000 
FROM            BPCS_TRANS_ITH_2
WHERE (TTDTE LIKE '%' + @TTDTE + '01%') AND (THWRKC LIKE '431101') AND TTYPE = 'R')  AS Enero, 

SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '02%' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)
/(SELECT SUM(T1+T2+T3)/1000 
FROM            BPCS_TRANS_ITH_2
WHERE (TTDTE LIKE '%' + @TTDTE + '02%') AND (THWRKC LIKE '431101') AND TTYPE = 'R')  AS Febrero, 

SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '03%' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)
/(SELECT SUM(T1+T2+T3)/1000 
FROM            BPCS_TRANS_ITH_2
WHERE (TTDTE LIKE '%' + @TTDTE + '03%') AND (THWRKC LIKE '431101') AND TTYPE = 'R')  AS Marzo, 

SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '04%' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)
/(SELECT SUM(T1+T2+T3)/1000 
FROM            BPCS_TRANS_ITH_2
WHERE (TTDTE LIKE '%' + @TTDTE + '04%') AND (THWRKC LIKE '431101') AND TTYPE = 'R')  AS Abril, 

SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '05%' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)
/(SELECT SUM(T1+T2+T3)/1000 
FROM            BPCS_TRANS_ITH_2
WHERE (TTDTE LIKE '%' + @TTDTE + '05%') AND (THWRKC LIKE '431101') AND TTYPE = 'R')  AS Mayo,

SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '06%' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)
/(SELECT SUM(T1+T2+T3)/1000 
FROM            BPCS_TRANS_ITH_2
WHERE (TTDTE LIKE '%' + @TTDTE + '06%') AND (THWRKC LIKE '431101') AND TTYPE = 'R')  AS Junio, 

SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '07%' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)
/(SELECT SUM(T1+T2+T3)/1000 
FROM            BPCS_TRANS_ITH_2
WHERE (TTDTE LIKE '%' + @TTDTE + '07%') AND (THWRKC LIKE '431101') AND TTYPE = 'R')  AS Julio, 

SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '08%' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)
/(SELECT SUM(T1+T2+T3)/1000 
FROM            BPCS_TRANS_ITH_2
WHERE (TTDTE LIKE '%' + @TTDTE + '08%') AND (THWRKC LIKE '431101') AND TTYPE = 'R')  AS Agosto, 

SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '09%' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)
/(SELECT SUM(T1+T2+T3)/1000 
FROM            BPCS_TRANS_ITH_2
WHERE (TTDTE LIKE '%' + @TTDTE + '09%') AND (THWRKC LIKE '431101') AND TTYPE = 'R')  AS Septiembre,

SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '10%' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)
/(SELECT SUM(T1+T2+T3)/1000 
FROM            BPCS_TRANS_ITH_2
WHERE (TTDTE LIKE '%' + @TTDTE + '10%') AND (THWRKC LIKE '431101') AND TTYPE = 'R')  AS Octubre,

SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '11%' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)
/(SELECT SUM(T1+T2+T3)/1000 
FROM            BPCS_TRANS_ITH_2
WHERE (TTDTE LIKE '%' + @TTDTE + '11%') AND (THWRKC LIKE '431101') AND TTYPE = 'R')  AS Noviembre,

SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '12%' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)
/(SELECT SUM(T1+T2+T3)/1000 
FROM            BPCS_TRANS_ITH_2
WHERE (TTDTE LIKE '%' + @TTDTE + '12%') AND (THWRKC LIKE '431101') AND TTYPE = 'R')  AS Diciembre,

SUM(CASE WHEN TTDTE LIKE '%' + @TTDTE + '%' AND TPROD LIKE 'Q%' THEN (T1 + T2 + T3) * - 1 ELSE 0 END)
/(SELECT SUM(T1+T2+T3)/1000 
FROM            BPCS_TRANS_ITH_2
WHERE (TTDTE LIKE '%' + @TTDTE + '%') AND (THWRKC LIKE '431101') AND TTYPE = 'R')  AS Total_Anual
FROM            BPCS_TRANS_ITH_2
WHERE        (TTDTE LIKE '%' + @TTDTE + '%') AND (THWRKC LIKE '431101') AND TPROD LIKE 'Q%' AND TTYPE = 'I'
GROUP BY TPROD
ORDER BY TPROD


SELECT SUM(T1+T2+T3) 
FROM            BPCS_TRANS_ITH_2
WHERE (TTDTE LIKE '%' + @TTDTE + '01%') AND (THWRKC LIKE '431101') AND TTYPE = 'R'

Casimiro Notevi 08-12-2015 18:11:48

Cita:

Empezado por Malixnox (Mensaje 500307)
Ya resolví al parecer, les dejo el código por si a alguien le es de ayuda, un amigo me explicó por teléfono que existen sub select y tal, lo busqué y me funcionaron.

Qué bien, lo usaremos para gestionar nuestros molinos ;)

Malixnox 08-12-2015 18:16:11

Cita:

Empezado por Casimiro Notevi (Mensaje 500309)
Qué bien, lo usaremos para gestionar nuestros molinos ;)

Hey hey, a lo mejor alguien necesita hacer una consulta similar para gestionar sus cerdos panzudos en planta de bacon [?]

Solo lo dejo, ojalá a alguien le sea útil.


La franja horaria es GMT +2. Ahora son las 04:42:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi