SQL Server - AGRUPAR VENTAS POR AÑO

 
Vista:
sin imagen de perfil

AGRUPAR VENTAS POR AÑO

Publicado por Nico Monzon (7 intervenciones) el 20/03/2017 18:13:30
Hola a todos los que leen esta duda, tengo la siguiente consulta, lo que necesito es agrupar por año, no sé que es lo que estoy haciendo mal ya que me da un error, lo que necesito obtener en esta consulta son las ventas separadas por año. muchas gracias a todos


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
54
55
56
57
58
59
60
SELECT 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,
   (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,
   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/2016'
      AND glin_cliente         BETWEEN 430010001 AND 430999999
      AND glin_alma            BETWEEN 2 AND 40
      AND glin_vendedor        BETWEEN 2 AND 2
      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,
 
   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, 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;
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 VENTAS POR AÑO

Publicado por Isaias (4558 intervenciones) el 21/03/2017 18:20:35
Para no hacerle al "adivino", ¿Cuales son los errores que te manda?
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 VENTAS POR AÑO

Publicado por Nico Monzon (7 intervenciones) el 21/03/2017 21:12:16
en este parte de la consulta me la marca en rojo en la palabra END

SUM(CASE WHEN YEAR(fecha) = 2015 THEN replace(round(neto_sin_iva, 2) - rappel,'.',',')) END AS 2015,

y cuando ejecuto la sentencia da este error:

ORA-00905: falta una palabra clave
00905. 00000 - "missing keyword"
*Cause:
*Action:
Error en la línea: 2, columna: 87

me estoy volviendo loco y no doy con el error

Un salludo
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 VENTAS POR AÑO

Publicado por Isaias (4558 intervenciones) el 21/03/2017 23:01:35
¿En esta linea estas encerrando los caracteres de PUNTO y COMA entre comitas simples?

'.',','

¿No te hace falta una comita?

Ademas, estas en un foro de SQL SERVER y tu mensaje es de error es de ORACLE
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 VENTAS POR AÑO

Publicado por Isaias (4558 intervenciones) el 21/03/2017 23:19:09
Creo que ya vi el error, aunque no soy conocedor de Oracel, si en la instruccion REPLACE, creo que deberia ser asi:


SUM(CASE WHEN YEAR(fecha) = 2015 THEN replace(rappel,'.',',') - round(neto_sin_iva, 2)) END AS 2015,
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 VENTAS POR AÑO

Publicado por Nico (7 intervenciones) el 21/03/2017 23:30:55
No, no faltan comas, he revisado el codigo
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