SQL - Problema con JOINS

 
Vista:

Problema con JOINS

Publicado por Efren (21 intervenciones) el 25/09/2008 19:31:17
Hola foro, espero me puedan ayudar con este problema..

tengo dos vistas que ambas tienen las mismas columnas excepto 1 que viene siendo el campo calculado (total)

en la tabla 1 tengo estos datos

GRUPO CATEGORIA FCTS
FIN Customs 8.44073391
FIN Material Handling 8.557352304
FIN Outside Services and Consulting 9.511316299
26.50940251

en la tabla 1 tengo estos datos

GRUPO CATEGORIA EXPENSE
FIN Business Licences -0.355910771
FIN Customs 9.218031745
FIN Material Handling 5.352600975
FIN Operating and Office Supplies 0.439726469
FIN Others 0.310264726
FIN Outside Services and Consulting 0.652982352

* ahora bien, el Join tengo que hacerlo por medio de la caterogia, y cuando lo hago me repite algunos valores o los dobletea, tambien necesito que los registros que tenga una tabla que no tenga la otra tambien los ponga y le ponga valor cero. alguna sugerencia? aqui abajo pongo los resultados como deberia tenerlos, aunque no se ve bien por ser campo de texto.. :(

* Lo que hace el query este es sacar la diferencia de las dos tablas de la priumera la columan FCTS y la segunda la columna EXPENSE

PERIODO GRUPO CATEGORIA FCTS EXPENSE VARIATION
9 FIN Customs 8.44073391 9.218031745 -0.777297835
9 FIN Material Handling 8.557352304 5.352600975 3.204751329
9 FIN Outside Services and Consulting 9.511316299 0.652982352 8.858333947
9 FIN Business Licences 0 -0.355910771 0.355910771
9 FIN Operating and Office Supplies 0 0.439726469 -0.439726469
9 FIN Others 0 0.310264726 -0.310264726

lo que tengo hecho es algo como esto:

SELECT E.PERIODO, F.GRUPO, E.[GROUP], ISNULL(SUM(F.FCTS),0) AS FCST, ISNULL(SUM(E.EXPENSE),0) AS EXPENSE,
ISNULL(SUM(F.FCTS),0) - ISNULL(SUM(E.EXPENSE),0) AS VARIATION
FROM VIEWFCST AS F
FULL JOIN VIEW_EXPENSE AS E
ON F.[GROUP] = E.[GROUP] AND F.PERIODO = E.PERIODO
WHERE F.PERIODO = '9' AND E.PERIODO = '9' AND F.GRUPO = 'FIN' --AND E.GRUPO = 'G ADM'
GROUP BY F.GRUPO, E.[GROUP], E.PERIODO

Espero me puedan dar un norte. de antemano gracias.

Efren
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

RE:Problema con JOINS

Publicado por Efren (21 intervenciones) el 25/09/2008 22:37:15
LES DEJO LA SULUCION... :)


SELECT T.[GROUP], SUM(CASE WHEN [GRUPO] = 'FIN' THEN (ROUND(VARIATION,3)) ELSE 0 END) AS 'FIN'
,SUM(CASE WHEN [GRUPO] = 'G ADM' THEN (ROUND(VARIATION,3)) ELSE 0 END) AS 'G ADM'
,SUM(CASE WHEN [GRUPO] = 'H RES' THEN (ROUND(VARIATION,3)) ELSE 0 END) AS 'H RES'
,SUM(CASE WHEN [GRUPO] = 'IT' THEN (ROUND(VARIATION,3)) ELSE 0 END) AS 'IT'
,SUM(CASE WHEN [GRUPO] = 'MATL' THEN (ROUND(VARIATION,3)) ELSE 0 END) AS 'MATL'
,SUM(CASE WHEN [GRUPO] = 'BLDG' THEN (ROUND(VARIATION,3)) ELSE 0 END) AS 'BLDG'
,SUM(CASE WHEN [GRUPO] = 'EQ-MAINT' THEN (ROUND(VARIATION,3)) ELSE 0 END) AS 'EQ-MAINT'
,SUM(CASE WHEN [GRUPO] = 'MOLD-MAINT' THEN (ROUND(VARIATION,3)) ELSE 0 END) AS 'MOLD-MAINT'
,SUM(CASE WHEN [GRUPO] = 'MOLD' THEN (ROUND(VARIATION,3)) ELSE 0 END) AS 'MOLD'
,SUM(CASE WHEN [GRUPO] = 'QA' THEN (ROUND(VARIATION,3)) ELSE 0 END) AS 'QA'
,SUM(CASE WHEN [GRUPO] = 'SBU-A' THEN (ROUND(VARIATION,3)) ELSE 0 END) AS 'SBU-A'
,SUM(CASE WHEN [GRUPO] = 'SBU-B' THEN (ROUND(VARIATION,3)) ELSE 0 END) AS 'SBU-B'
,SUM(CASE WHEN [GRUPO] = 'SRTUP' THEN (ROUND(VARIATION,3)) ELSE 0 END) AS 'SRTUP'
FROM
( ---ESTA ERA LA SOLUCION QUE BUSCABA!! GRACIAS…
SELECT T.PERIODO, T.GRUPO, T.[GROUP], SUM(FCTS) AS FCST, SUM(EXPENSE) AS ACTUAL,
SUM(ISNULL(FCTS,0)) - SUM(ISNULL(EXPENSE,0)) AS VARIATION
FROM
(
SELECT PERIODO, GRUPO, [GROUP], FCTS, '' AS EXPENSE
FROM VIEWFCST WHERE PERIODO = @MONTHFISCAL --AND GRUPO = 'G ADM'
UNION ALL
SELECT PERIODO, GRUPO, [GROUP], '' AS FCST ,EXPENSE
FROM VIEW_EXPENSE WHERE PERIODO = @MONTHFISCAL --AND GRUPO = 'G ADM'
) AS T
GROUP BY T.PERIODO, T.GRUPO, T.[GROUP]
--ORDER BY F.GRUPO
) AS T
WHERE T.PERIODO = @MONTHFISCAL
GROUP BY T.PERIODO, T.[GROUP]
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

Nota...

Publicado por Leopoldo Taylhardat (93 intervenciones) el 26/09/2008 15:40:30
Probé en SQLAnywhere y sí funciona el like '%'+texto+'%'...
Creo que te servirá...
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