SQL - Unir querys SQL

   
Vista:

Unir querys SQL

Publicado por Jorge jorge.gutierrez@mercadoderefacciones.com (5 intervenciones) el 15/03/2012 22:14:32
buenas tardes tengo un problema
necesito unir 2 querys en uno
para poder mostrarlo
de esta manera

Venta_Contado Costo_Contado Venta_Credito Costo_Credito Total Contado Total Credito



contado y credito dependen de la columna type asi que tengo que separarlas

no se si tengan una forma de optimizar o realizar lo que necesito hacer

les agradeceria su ayuda u opinion
les dejare aqui el codigo


SELECT [SID]

,sum([VENTA]) as Venta_Contado
,sum([COSTO]) as Costo_Contado

FROM [VENTAS].[dbo].[SALES2]
where year(idate)=2012 and idate = '03/10/2012' and anum not in (75,76)
and type in (2,3)
group by sid
order by sid


SELECT [SID]

,sum([VENTA]) as Venta_Credito
,sum([COSTO]) as Costo_Credito

FROM [VENTAS].[dbo].[SALES2]
where year(idate)=2012 and idate = '03/10/2012' and anum not in (75,76)
and type in (0,1)
group by sid
order by sid
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
Imágen de perfil de xve

Unir querys SQL

Publicado por xve (238 intervenciones) el 16/03/2012 09:04:10
Hola Jorge, no te entiendo muy bien... si los campos son de la misma tabla, porque no los realizas juntos en un solo select?
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

Unir querys SQL

Publicado por jorge (5 intervenciones) el 16/03/2012 16:21:31
bueno no tengo mucha experiencia en esto, soy algo nuevo, pero mi limitante al parecer por que tengo que separar lo que es venta de credito y contado, credito en type es 0,1 y contado 2,3
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
Imágen de perfil de xve

Unir querys SQL

Publicado por xve (238 intervenciones) el 16/03/2012 19:26:02
Podria ser algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT * FROM
(
    SELECT [SID]
    ,sum([VENTA]) as Venta_Contado
    ,sum([COSTO]) as Costo_Contado
 
    FROM [VENTAS].[dbo].[SALES2]
    where year(idate)=2012 and idate = '03/10/2012' and anum not in (75,76)
    and type in (2,3)
    group by sid
    order by sid
) AS S1,
(
    SELECT [SID]
    ,sum([VENTA]) as Venta_Credito
    ,sum([COSTO]) as Costo_Credito
 
    FROM [VENTAS].[dbo].[SALES2]
    where year(idate)=2012 and idate = '03/10/2012' and anum not in (75,76)
    and type in (0,1)
    group by sid
    order by sid
) AS S2

Coméntanos, ok?
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

Unir querys SQL

Publicado por jorge (5 intervenciones) el 21/03/2012 00:53:37
buenas tardes, sabes no me funciono tu opcion, da un resultado muy raro y se repite varias veces
no habra otro metodo como una subconsulta?
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

Unir querys SQL

Publicado por leonardo_josue (878 intervenciones) el 21/03/2012 23:12:58
Hola Jorge:

Siempre menciona en tus post la BD con la que estás trabajando, pues si bien la sintaxis es semejante entre los distintos DBMS, también hay diferencias importantes. También es conveniente que pongas algunos datos de ejemplo de tus tablas, para poder tener más claridad en cuanto a lo que quieres obtener. Si entendí correctamente lo que quieres hacer, podrías hacerlo con una suma condicional, más o menos así:

1
2
3
4
5
6
7
8
9
10
SELECT [SID],
sum(case when type in (2,3) then [VENTA] else 0 end) as Venta_Contado,
sum(case when type in (2,3) then [COSTO] else 0 end) as Costo_Contado,
sum(case when type in (0,1) then [VENTA] else 0 end) as Venta_Credito,
sum(case when type in (0,1) then [COSTO] else 0 end) as Costo_Credito
FROM [VENTAS].[dbo].[SALES2]
where year(idate)=2012 and idate = '03/10/2012' and anum not in (75,76)
and type in (0,1,2,3)
group by sid
order by sid


La sentencia CASE-WHEN es soportada por la mayoría de los DBMS actuales, pero al no mencionar con qué estás trabajando no estoy seguro de si funcionará o no... También es posible que tengas problemas con la condición de los case, si no soporta el operador in simplemente cambialo por

(type = 0 or type = 1)

Dale un vistazo y nos comentas.

Saludos
Leo.
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

Unir querys SQL

Publicado por jorge (5 intervenciones) el 21/03/2012 23:37:35
buenas tardes leo, muchas gracias me funciono a la perfeccion, y si tomare en cunta tus consejos
estoy trabajando con sql

ahora lo que me piden es total cada ciertas sucursales
donde MR es SID, no se si hay forma sacar esa informacion
aqui te muestro mas o menos como es a lo que quiero llegar
espero ayude esta informacion y agradecere tu ayuda


MR Venta_Contado Costo_Contado Venta_Credito Costo_Credito Total Venta Total Costo

1 $87,179.32 $58,535.72 $18,186.62 $11,872.38 $105,365.94 $70,408.10
2 $28,660.69 $18,546.04 -$929.05 -$510.50 $27,731.64 $18,035.55
3 $14,092.28 $8,978.77 $198.76 $119.85 $14,291.04 $9,098.61
4 $16,130.91 $10,159.25 $4,576.70 $2,811.22 $20,707.61 $12,970.47
5 $43,228.91 $29,233.83 $114.23 $74.00 $43,343.14 $29,307.83
6 $26,942.73 $17,452.78 $6,104.41 $3,840.36 $33,047.14 $21,293.14
7 $12,696.51 $7,854.14 $- $- $12,696.51 $7,854.14
8 $35,563.57 $23,081.39 $3,282.50 $2,052.99 $38,846.07 $25,134.37
9 $31,372.25 $20,035.89 $- $- $31,372.25 $20,035.89
10 $24,329.47 $16,343.00 $4,613.10 $2,772.99 $28,942.57 $19,115.99
11 $9,317.13 $5,831.61 $- $- $9,317.13 $5,831.61
12 $18,483.89 $12,151.07 $2,039.38 $1,380.90 $20,523.27 $13,531.97
14 $33,015.29 $20,891.31 $526.22 $325.73 $33,541.51 $21,217.04
15 $9,366.96 $6,121.30 $2,021.15 $1,147.87 $11,388.11 $7,269.17
16 $19,837.46 $12,653.21 $594.12 $378.23 $20,431.58 $13,031.44
17 $20,847.92 $14,197.96 $886.06 $519.56 $21,733.98 $14,717.52
18 $11,130.43 $6,420.45 $406.27 $278.58 $11,536.70 $6,699.03
19 $26,353.90 $17,546.00 $- $- $26,353.90 $17,546.00
20 $13,671.09 $8,927.40 $823.44 $552.91 $14,494.53 $9,480.32
21 $11,808.03 $7,645.73 $1,038.36 $615.01 $12,846.39 $8,260.74
T $494,028.74 $322,606.84 $44,482.27 $28,232.08 $538,511.01 $350,838.92

MR Venta_Contado Costo_Contado Venta_Credito Costo_Credito Total Venta Total Costo
60 $11,189.65 $7,100.79 $2,220.03 $1,502.22 $13,409.68 $8,603.01
61 $1,551.04 $1,214.08 $571.44 $448.12 $2,122.48 $1,662.20
T $12,740.69 $8,314.87 $2,791.47 $1,950.34 $15,532.16 $10,265.21

LLYFE Venta_ContadoCosto_Contado Venta_Credito Costo_Credito Total Venta Total Costo
71 $6,511.22 $3,399.53 $750.82 $428.11 $7,262.04 $3,827.63
72 $2,342.68 $1,121.24 $- $- $2,342.68 $1,121.24
73 $4,127.38 $2,057.93 $- $- $4,127.38 $2,057.93
74 $3,282.07 $1,605.08 $- $- $3,282.07 $1,605.08
75 $2,259.82 $1,571.15 $- $- $2,259.82 $1,571.15
76 $2,992.42 $1,031.06 $- $- $2,992.42 $1,031.06
77 $2,806.93 $1,836.48 $- -$729.81 $2,806.93 $1,106.66
78 $1,898.38 $1,008.99 $- $- $1,898.38 $1,008.99
79 $3,005.10 $1,719.24 $- $- $3,005.10 $1,719.24
T $29,226.00 $15,350.70 $750.82 -$301.70 $29,976.82 $15,048.99
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

Unir querys SQL

Publicado por leonardo_josue (878 intervenciones) el 22/03/2012 16:20:23
Hola de nuevo Jorge:

Creo que para lo que quieres hacer te sirve el operador ROLLUP que proporciona SQL Server... este calcula subtotales y totales de acuerdo a los criterios por los que se agrupan. Dale un vistazo a esta ligas:

http://msdn.microsoft.com/es-es/library/ms189305(v=sql.90).aspx

http://msdn.microsoft.com/es-es/library/bb522495.aspx

Si esto no te sirve lo comentas para buscar alguna otra alternativa.

Saludos
Leo.
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

Unir querys SQL

Publicado por jorge (5 intervenciones) el 22/03/2012 16:32:20
muchas gracias leo, revisare los links, saludos
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