SQL - Ayuda en consulta SQL (Por favor)

 
Vista:
sin imagen de perfil

Ayuda en consulta SQL (Por favor)

Publicado por José (7 intervenciones) el 25/11/2015 14:31:37
Tristemente hago desde el celular porque en donde trabajo tenemos el Internet censurado (No sé como coño tienes el Internet censurado a los programadores) ah y brw tampoco puedo meter pendrives (Haha).

Dejando de lado mis condiciones precarias tengo problemas con una consulta que no sé hacer y llevo ya 3 días perdidos, nunca había publicado nada en un foro para pedir ayuda, pero ya mis conocimientos se quedaron cortos.

La empresa quiere lo siguiente:

En cierta planta hay un consumo de químicos y pues quieren que el programa muestre los químicos usados en el año pero por meses y un total al final de cuanto va usado de año.

La tabla contiene TPROD que es el código del químico, TTDTE que es para la fecha en formato yyyyMMdd o sea hoy es 20151125, THWRKC que es para identificar la planta que estoy usando, T1, T2, T3 que es cuanto de químico usó cada turno y TTYPE para identificar si es Insumo o producción.

Lo que necesito es una tabla mas o menos así


TPROD|Enero|Febrero
Quim1|SumT|SumT
Quim2|SumT|SumT
Quim3|SumT|sumT

Hasta Diciembre y un total de año, antes que piensen que se resuelve con varias consultas, que están en lo correcto, varias consultas y lo tiro en labels los resultados tristemente tengo que usar un GridView para que genere automáticamente los químicos(TPROD) porque a veces agregan nuevos y no quieren que lo agregue manualmente cada vez porque habría que avisarme y tal.

Lo mas lejos que llegué (O sea solo Enero)
Porque en la condición del where tengo para sacar la fecha y necesito diferenciar las fechas para hacer las distintas columnas.

El celular no me quiere subir la imagen pero se los escribo:

La consulta que tengo exactamente es:

SELECT TPROD SUM(T1+T2+T3) as Enero
FROM BPCS_TRANS_ITH_2
Where (TTYPE='I') AND (TTDTE like '%' + @TTDTE + '01%') AND (THWRKC LIKE '43110%') and (TPROD LIKE 'Q%')
GROUP BY TPROD

TTYPE = I dice que es insumo.
@TTDTE es un label que me da el año actual.
THWRKC = es para diferencial a través el código la planta.
TPROD = Q% es porque los códigos de químicos comienzan por Q.

Esa consulta me da de resultado:

TPROD|Enero
Qcod1|-474848
Qcod2|-4654
Qcod3|-14334

Y ya... Mi inutilidad solo lleva eso, ayuda por favor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 109
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Ayuda en consulta SQL (Por favor)

Publicado por Rafael (111 intervenciones) el 25/11/2015 14:46:07
Quiero entender que usas SQL Server, pero que version?

Si es correcta mi suposicion podrias probar algo como...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT TPROD
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '01%' THEN T1+T2+T3 ELSE 0 END) Enero
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '02%' THEN T1+T2+T3 ELSE 0 END) Febrero
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '03%' THEN T1+T2+T3 ELSE 0 END) Marzo
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '04%' THEN T1+T2+T3 ELSE 0 END) Abril
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '05%' THEN T1+T2+T3 ELSE 0 END) Mayo
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '06%' THEN T1+T2+T3 ELSE 0 END) Junio
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '07%' THEN T1+T2+T3 ELSE 0 END) Julio
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '08%' THEN T1+T2+T3 ELSE 0 END) Agosto
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '09%' THEN T1+T2+T3 ELSE 0 END) Septiembre
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '10%' THEN T1+T2+T3 ELSE 0 END) Octubre
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '11%' THEN T1+T2+T3 ELSE 0 END) Noviembre
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '12%' THEN T1+T2+T3 ELSE 0 END) Diciembre
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '%' THEN T1+T2+T3 ELSE 0 END) Total_Anual
FROM   BPCS_TRANS_ITH_2
WHERE  TTYPE='I'
AND    TTDTE like '%' + @TTDTE + '%'
AND    THWRKC LIKE '43110%'
AND    TPROD LIKE 'Q%'
GROUP BY TPROD

Saludos

Pd. Si te sirve un +1 no me viene mal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil

Ayuda en consulta SQL (Por favor)

Publicado por José (7 intervenciones) el 25/11/2015 15:04:41
Te amo.
Muchas gracias, me funciona correctamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda en consulta SQL (Por favor)

Publicado por José (7 intervenciones) el 25/11/2015 15:31:59
Otra pregunta, los resultados son algo como
14453,0000000
Y round no me lo quiere aceptar para eliminarle los decimales, son puros números enteros pero algún genio le puse el poco de 0, ¿Hay manera desde la consulta de eliminarle los decimales?, capaz puse mal posicionado el Round, tengo que hacerle eso y multiplicarlos por -1 porque por ser insumos es negativo, ésto último ni lo je tratado, puedo hasta aprender a vivir con -Número, pero lo del round, si sabes porfa.

Si no es mucha molestia ni abuso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda en consulta SQL (Por favor)

Publicado por José (7 intervenciones) el 25/11/2015 15:37:45
Otra pregunta, los resultados son algo como
14453,0000000
Y round no me lo quiere aceptar para eliminarle los decimales, son puros números enteros pero algún genio le puse el poco de 0, ¿Hay manera desde la consulta de eliminarle los decimales?, capaz puse mal posicionado el Round, si sabes porfa.

Si no es mucha molestia ni abuso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda en consulta SQL (Por favor)

Publicado por José (7 intervenciones) el 25/11/2015 16:10:41
Otra pregunta, los resultados son algo como
14453,0000000
Y round no me lo quiere aceptar para eliminarle los decimales, son puros números enteros pero algún genio le puse el poco de 0, ¿Hay manera desde la consulta de eliminarle los decimales?, capaz puse mal posicionado el Round, tengo que hacerle eso y multiplicarlos por -1 porque por ser insumos es negativo, ésto último ni lo je tratado, puedo hasta aprender a vivir con -Número, pero lo del round, si sabes porfa.

Si no es mucha molestia ni abuso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 109
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Ayuda en consulta SQL (Por favor)

Publicado por Rafael (111 intervenciones) el 26/11/2015 08:40:47
Por favor pon como pusiste el Round y la multiplicacion para que te corrija sobre eso...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ayuda en consulta SQL (Por favor)

Publicado por José (7 intervenciones) el 26/11/2015 11:39:01
La verdad pasé de eso, lo convertí en money pero sigue dándome un formato que no quiero porque los miles me los da con coma en vez de punto y a parte no quiero decimales y money pone a todo el ".00" pero lo dejé así porque es estética, ahora, no tengo el código exacto porque no ando en el trabajo aún pero tengo un problema distinto y hey, cualquier cosa que pongas te doy +1, lol, no sabes cuanto me alivió eso del CASE, no manejo mucho bases de datos por el manejador, bueno tengo un código mas o menos así

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT TPROD
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '01%' AND TTYPE='I' AND TPROD LIKE 'Q%' THEN T1+T2+T3 ELSE 0 END)/SUM(CASE WHEN TTDTE like '%' + @TTDTE + '01%' AND TTYPE='R' THEN T1+T2+T3 ELSE 0 END) Enero
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '02%' AND TTYPE='I' AND TPROD LIKE 'Q%' THEN T1+T2+T3 ELSE 0 END)/SUM(CASE WHEN TTDTE like '%' + @TTDTE + '02%' AND TTYPE='R' THEN T1+T2+T3 ELSE 0 END) Febrero
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '03%' AND TTYPE='I' AND TPROD LIKE 'Q%' THEN T1+T2+T3 ELSE 0 END)/SUM(CASE WHEN TTDTE like '%' + @TTDTE + '03%' AND TTYPE='R' THEN T1+T2+T3 ELSE 0 END) Marzo
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '04%' AND TTYPE='I' AND TPROD LIKE 'Q%' THEN T1+T2+T3 ELSE 0 END)/SUM(CASE WHEN TTDTE like '%' + @TTDTE + '04%' AND TTYPE='R' THEN T1+T2+T3 ELSE 0 END) Abril
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '05%' AND TTYPE='I' AND TPROD LIKE 'Q%' THEN T1+T2+T3 ELSE 0 END)/SUM(CASE WHEN TTDTE like '%' + @TTDTE + '05%' AND TTYPE='R' THEN T1+T2+T3 ELSE 0 END) Mayo
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '06%' AND TTYPE='I' AND TPROD LIKE 'Q%' THEN T1+T2+T3 ELSE 0 END)/SUM(CASE WHEN TTDTE like '%' + @TTDTE + '06%' AND TTYPE='R' THEN T1+T2+T3 ELSE 0 END) Junio
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '07%' AND TTYPE='I' AND TPROD LIKE 'Q%' THEN T1+T2+T3 ELSE 0 END)/SUM(CASE WHEN TTDTE like '%' + @TTDTE + '07%' AND TTYPE='R' THEN T1+T2+T3 ELSE 0 END) Julio
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '08%' AND TTYPE='I' AND TPROD LIKE 'Q%' THEN T1+T2+T3 ELSE 0 END)/SUM(CASE WHEN TTDTE like '%' + @TTDTE + '08%' AND TTYPE='R' THEN T1+T2+T3 ELSE 0 END) Agosto
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '09%' AND TTYPE='I' AND TPROD LIKE 'Q%' THEN T1+T2+T3 ELSE 0 END)/SUM(CASE WHEN TTDTE like '%' + @TTDTE + '09%' AND TTYPE='R' THEN T1+T2+T3 ELSE 0 END) Septiembre
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '10%' AND TTYPE='I' AND TPROD LIKE 'Q%' THEN T1+T2+T3 ELSE 0 END)/SUM(CASE WHEN TTDTE like '%' + @TTDTE + '10%' AND TTYPE='R' THEN T1+T2+T3 ELSE 0 END) Octubre
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '11%' AND TTYPE='I' AND TPROD LIKE 'Q%' THEN T1+T2+T3 ELSE 0 END)/SUM(CASE WHEN TTDTE like '%' + @TTDTE + '11%' AND TTYPE='R' THEN T1+T2+T3 ELSE 0 END) Noviembre
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '12%' AND TTYPE='I' AND TPROD LIKE 'Q%' THEN T1+T2+T3 ELSE 0 END)/SUM(CASE WHEN TTDTE like '%' + @TTDTE + '12%' AND TTYPE='R' THEN T1+T2+T3 ELSE 0 END) Diciembre
     , SUM(CASE WHEN TTDTE like '%' + @TTDTE + '%' AND TTYPE='I' AND TPROD LIKE 'Q%' THEN T1+T2+T3 ELSE 0 END)/SUM(CASE WHEN TTDTE like '%' + @TTDTE + '%' AND TTYPE='R' THEN T1+T2+T3 ELSE 0 END) Total_Anual
FROM   BPCS_TRANS_ITH_2
WHERE
AND    TTDTE like '%' + @TTDTE + '%'
AND    THWRKC LIKE '43110%'
GROUP BY TPROD

Porque tengo que dividirlo entre las R para sacar algo de cantidad de químicos usados por producción [Las R son producción], pero tengo que quitar el WHERE TPROD LIKE 'Q%' y TTYPE = 'I' porque las R tienen código que comienza por S pero igual con el filtro de THWRKC ya dice que todas las R son de la planta, no es necesario el filtro de S, sin embargo aunque ya ésto hace lo que quiero me muestra todos los TPROD que hay, quiero que siga mostrando solo los que comienzan en Q porque son los que realmente quiero y no todos los códigos de cualquier cantidad de cosa que tiene la empresa, o sea si me hace la división y todo pero me muestra mas de lo que quiero y si pongo el filtro abajo de WHERE TTYPE='I' AND TPROD LIKE 'Q%' no me va a agarrar las R que las necesito ahora, quise inventarme un CASE dentro del TPROD pero nos habilidades fueron insuficientes, cuando puedas y sepas una manera te lo agradecería.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda en consulta SQL (Por favor)

Publicado por José (7 intervenciones) el 26/11/2015 11:13:59
Otra pregunta, los resultados son algo como
14453,0000000
Y round no me lo quiere aceptar para eliminarle los decimales, son puros números enteros pero algún genio le puse el poco de 0, ¿Hay manera desde la consulta de eliminarle los decimales?, capaz puse mal posicionado el Round, tengo que hacerle eso y multiplicarlos por -1 porque por ser insumos es negativo, ésto último ni lo je tratado, puedo hasta aprender a vivir con -Número, pero lo del round, si sabes porfa.

Si no es mucha molestia ni abuso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar