SQL Server - AGRUPAR POR AÑOS

 
Vista:
sin imagen de perfil

AGRUPAR POR AÑOS

Publicado por Nico Monzon (7 intervenciones) el 07/02/2017 17:04:06
Hola a todos los que están leyendo este mensaje, tengo la siguiente consulta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//*********************************************************************************************************//
 
SELECT VENDEDORR,fecha,familia,replace(round(neto_sin_iva, 2) - rappel,'.',',') AS neto
FROM alma,
(SELECT lin_codigo, mar_descripcion,
   LPad(mar_familia, 5, '') || '' || fam_nombre as Familia,
   LPad(mar_subfamilia, 5, ' ') || ' ' || subfam_nombre as SubFamilia,
   LPad('', 30, '') || '' || VEN_NOMBRE as VENDEDOR,
   LPad('', 3, '') || '' || glin_vendedor as VENDEDORR,
   TO_NUMBER(TO_CHAR(GLIN_FECHA, 'YYYY')) as fecha,
   mar_pre_costo costo_art, mar_pre_medio medio_art,
      Sum(lin_uni) as unidades,
      Sum(lin_bonif) as bonif,
      Sum(lin_bultos) as bultos,
      Sum(round(round(lin_uni * lin_p_venta,2) * (1 - lin_descuento_t/100), 2)) as ventas,
      Sum(lin_uni * mar_peso) as kilos,
      Sum(Round(lin_p_costo * (lin_uni + lin_bonif), 2)) as costo,
      Sum(Round(lin_p_medio * (lin_uni + lin_bonif), 2)) as pmedio,
      ((sum(round(round(lin_uni * lin_p_venta, 2) * (1 - lin_descuento_t/100), 2))) - sum(round((lin_uni + lin_bonif) * lin_p_costo, 2))) as BenfBruto,
      ((sum(round(round(lin_uni * lin_p_venta, 2) * (1 - lin_descuento_t/100), 2))) - sum(round((lin_uni + lin_bonif) * lin_p_medio, 2))) as BenfPM,
      Sum(round(round(round(lin_uni * lin_p_venta, 2) * (1 - lin_descuento_t / 100), 2) * (1 - glin_dto_pp / 100) * (1 - glin_dto_adicio_01 / 100) * (1 - glin_dto_adicio_02 / 100) * (1 - glin_dto_adicio_03 / 100), 2)) as neto_sin_iva,
      Sum(round(round(round(round(lin_uni * lin_p_venta, 2) * (1 - lin_descuento_t / 100), 2) * glin_recargo / 100, 2) * (1 + lin_iva_v / 100), 2)) rappel,
      Sum(glin_descuento_i) glin_descuento_i,
      Sum(round(Round(round(round(lin_uni * lin_p_venta,2) * (1 - lin_descuento_t/100),2) * (1 - glin_dto_pp / 100) * (1 - glin_dto_adicio_01 / 100) * (1 - glin_dto_adicio_02 / 100) * (1 - glin_dto_adicio_03 / 100), 2) * (lin_iva_v/100), 2))  IVA_V
      FROM linfac, glinfac, articulo, familia, subfam , proved01 , vendedor, client01
      WHERE glin_n_fac           = lin_n_fac
      AND glin_estado          = lin_estado
      AND glin_estado          IN (1, 6, 8)
      AND Trim(mar_n_articulo) = Trim(lin_codigo)
      AND mar_familia          = fam_codigo      AND mar_subfamilia       = subfam_codigo (+)
      AND mar_familia          = subfam_codigo_fam (+)
      AND glin_fecha           BETWEEN '01/01/2015' AND '31/12/2017'
      AND glin_cliente         BETWEEN 430010001 AND 430999999
      AND glin_alma            BETWEEN 2 AND 40
      AND glin_vendedor       BETWEEN 0 AND 999
AND mar_familia          BETWEEN 1 AND 99
AND glin_zona            BETWEEN 0 AND 999
 AND lin_provee = prove_cuenta (+)
AND mcl_vendedor = ven_codigo (+)
AND glin_cliente = mcl_n_cliente
GROUP BY lin_codigo, mar_descripcion,
LPad(mar_familia, 5, '') || '' || fam_nombre,
LPad(mar_subfamilia, 5, ' ') || ' ' || subfam_nombre,
LPad('', 30, '') || '' || VEN_NOMBRE,
LPad('', 30, '') || '' ||  glin_vendedor,
TO_NUMBER(TO_CHAR(GLIN_FECHA, 'YYYY')),
mar_pre_costo, mar_pre_medio,glin_recargo ),articulo A
WHERE alm_codigo = lin_codigo
AND alm_codigo = A.mar_n_articulo
GROUP BY lin_codigo, A.mar_descripcion,VENDEDORR, familia, subfamilia,VENDEDOR,fecha,mar_nu_prov,fecha, costo_art, medio_art,unidades, bultos, bonif, ventas, costo, pmedio, BenfBruto, BenfPM, neto_sin_iva, glin_descuento_i, iva_v ,rappel, kilos, A.mar_tipo_arti, A.mar_unid_bulto
order by fecha,familia;
 
//******************************************************************************************************************//

los datos que me muestra esta consulta son los siguientes:
----------------------------------------------------------------------------------------------------------------------------------
cod vendedor año venta familia precio neto
1 2015 Abastecimiento Galvanizado 2,85
20 2015 Abastecimiento Galvanizado 0
35 2015 Abastecimiento PB Terrain 276,98
23 2015 Abastecimiento Galvanizado 2,34
21 2015 Abastecimiento Galvanizado 12,7
28 2015 Abastecimiento Galvanizado 16,66
35 2016 Abastecimiento Galvanizado 167,64
27 2016 Abastecimiento Galvanizado 2,78
15 2015 Abastecimiento CU. 26,8
12 2015 Abastecimiento Galvanizado 14,14
15 2015 Abastecimiento Galvanizado 6,42
1 2017 Abastecimiento CU. 20,9
14 2017 Abastecimiento Galvanizado 21,97
8 2017 Abastecimiento Galvanizado 10,44
11 2015 Abastecimiento CU. 4,59
12 2016 Abastecimiento Galvanizado 0
20 2015 Abastecimiento PB Terrain 84,49


NECESITO QUE ALGUIEN ME EXPLIQUE COMO UNIFICAR ESTA INFORMACIÓN,
necesito que me los agrupe por año, familia y precio neto, es decir, algo como lo que muestro a continuación:


VENDEDOR FAMILIA NETO AÑO 2015 NETO AÑO 2016 NETO AÑO 2017

11 Abastecimiento CU. 4,59€

12 Abastecimiento Galvanizado 0€

20 Abastecimiento PB Terrain 84,49€



MUCHAS GRACIAS A TODOS LOS QUE ME PUEDAN APORTAR ALGUNA AYUDA
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 Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

AGRUPAR POR AÑOS

Publicado por Isaias (4558 intervenciones) el 07/02/2017 19:25:45
¿Que motor de base de datos estas ocupando?

SELECT VENDEDOR,fecha,familia,
SUM(CASE WHEN YEAR(fecha) = 2015 THEN replace(round(neto_sin_iva, 2) - rappel,'.',',')) END AS 2015,
SUM(CASE WHEN YEAR(fecha) = 2016 THEN replace(round(neto_sin_iva, 2) - rappel,'.',',')) END AS 2016,
SUM(CASE WHEN YEAR(fecha) = 2017 THEN replace(round(neto_sin_iva, 2) - rappel,'.',',')) END AS 2017
FROM alma,
...........................
...........................
...........................
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

AGRUPAR POR AÑOS

Publicado por Nico Monzon (7 intervenciones) el 08/02/2017 00:02:52
Hola isaias, en que parte de mi consulta pondria la consulta que me envias..gracias de antemano
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 Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

AGRUPAR POR AÑOS

Publicado por Isaias (4558 intervenciones) el 08/02/2017 01:34:22
En la PRIMERA PARTE del SELECT (Hasta arriba), te recuerdo que estas en un foro de SQL SERVER de Microsoft.
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

AGRUPAR POR AÑOS

Publicado por Nico Monzon (7 intervenciones) el 21/02/2017 23:32:16
Muchas Gracias Isaias eres un crak, me ha servido bastabte esta información, he conseguido sacar esto con lo que me has puesto, solo me falta que en las ventas del 2016 me las pongas al lado de la del 2015 para poder comprar, la idea es sacar ventas por proveedor
ordenado por PROVEEDOR Y LAS VENTAS DE CADA UNO EN LOS DIFERENTES AÑOS, te pongo el ejemplo qui debajo

cod proveedor nombre ventas 2015 ventas 2016
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
400010364 TUBERIAS Y PERFILES PLASTICOS 10,89

400010352 MEFA-DUBELFABRIK 11,1

400010387 INYECTOMETAL, S.A. 1,84


gracias por todo
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