Añadiendo la entidad VentasPorMarca
Los comerciales necesitan el cuadro de ventas por marca, en el que aparezcan cantidad e importe del año en curso y del anterior. Mis datos están en una tabla en la que cada línea es una agrupación de ventas por ejercicio, mes, zona y marca. Lo primero que necesito es una vista en que se muestren las ventas por zona y marca, del año en curso y del anterior. La creo en la base de datos así:
CREATE VIEW [dbo].[CRM_VentasPorMarcaYZona]
WITH SCHEMABINDING
AS
SELECT TOP (100) PERCENT zm.[Clasif_ neumático] as Gama, zm.Marca, zm.Comercial as Zona, vPrev.i AS ImporteAnt, vPrev.c AS CantidadAnt, vCurr.i AS ImporteAct,
vCurr.c AS CantidadAct
FROM (SELECT Marca, [Clasif_ neumático], Comercial
FROM dbo.[Cuadro mando Neumalia] AS c
GROUP BY [Clasif_ neumático], Marca, Comercial
HAVING ([Clasif_ neumático] <> '')) AS zm LEFT OUTER JOIN
(SELECT Año, Marca AS m, Comercial AS z, SUM([Imp_ ventas]) AS i, SUM(cast([Cdad_ ventas] as integer)) AS c
FROM dbo.[Cuadro mando Neumalia]
GROUP BY Año, Marca, Comercial
HAVING (Año = DATEPART(year, GETDATE()) - 1)) AS vPrev ON zm.Marca = vPrev.m AND zm.Comercial = vPrev.z LEFT OUTER JOIN
(SELECT Año, Marca AS m, Comercial AS z, SUM([Imp_ ventas]) AS i, SUM(cast([Cdad_ ventas] as integer)) AS c
FROM dbo.[Cuadro mando Neumalia] AS [Cuadro mando Neumalia_1]
GROUP BY Año, Marca, Comercial
HAVING (Año = DATEPART(year, GETDATE()))) AS vCurr ON zm.Marca = vCurr.m AND zm.Comercial = vCurr.z
ORDER BY zm.Marca
A continuación creo la clase VentasPorMarca:
namespace NeumaliaCRM.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
[Table("CRM_VentasPorMarcaYZona")]
public partial class VentasPorMarca
{
[Key]
[Column(Order = 0)]
[StringLength(30)]
public string Gama { get; set; }
[Key]
[Column(Order = 1)]
[StringLength(10)]
public string Marca { get; set; }
[Key]
[Column(Order = 2)]
[StringLength(10)]
public string Zona { get; set; }
public decimal? ImporteAnt { get; set; }
public int? CantidadAnt { get; set; }
public decimal? ImporteAct { get; set; }
public int? CantidadAct { get; set; }
}
}
También se puede crear a partir de la vista añadiendo
No hay comentarios:
Publicar un comentario