12
CUMPLIMIENTO DE SURTIDO 1. DISEÑO DE BASE DE DATOS La estructura de cumplimiento de surtido: FACT FINAL LEFT drop table #Temporal drop table #Temporal2 Select ( case when a.Local_Codigo is null then case when b.Local_Codigo IS NULL then c.Local_Codigo

Base de Datos

Embed Size (px)

DESCRIPTION

lo mejor

Citation preview

Page 1: Base de Datos

CUMPLIMIENTO DE SURTIDO

1. DISEÑO DE BASE DE DATOS

La estructura de cumplimiento de surtido:

FACT FINAL LEFT

drop table #Temporal drop table #Temporal2Select(

casewhen a.Local_Codigo is nullthen

casewhen b.Local_Codigo IS NULLthen c.Local_Codigoelse b.Local_Codigo

end elsea.Local_Codigo

end) as Local_Codigo,

(case

Page 2: Base de Datos

when a.Fecha is nullthen

casewhen b.Fecha IS NULLthen c.Fechaelse b.Fecha end

elsea.Fechaend) as Fecha,

(casewhen a.Producto_Codigo is nullthen

casewhen b.Producto_Codigo IS NULLthen c.Producto_Codigoelse b.Producto_Codigo end

elsea.Producto_Codigoend) as Producto,

a.Stock_unidades,a.Stock_valorizado,b.Stock_minimo_unid,c.Venta_Monto,c.Venta_Unidades,

(casewhen b.Stock_minimo_unid is nullthen0else1end) AS Surtido,

(casewhen a.Stock_unidades>=b.Stock_minimo_unidthen1else0end

) as MayorIgualStockMin,

(casewhena.Stock_unidades>0then1else0end) as StockMayor0

into #Temporalfromdbo.FJLMP_Stock_Producto a left joindbo.FJLMP_Surtido b

Page 3: Base de Datos

ona.Local_Codigo=b.Local_Codigo anda.Fecha=b.Fecha anda.Producto_Codigo=b.Producto_Codigoleft joindbo.FJLMP_Venta_Producto conb.Local_Codigo=c.Local_Codigo andb.Fecha=c.Fecha andb.Producto_Codigo=c.Producto_Codigoora.Local_Codigo=c.Local_Codigo anda.Fecha=c.Fecha anda.Producto_Codigo=c.Producto_Codigo

--Selectd.*,(case

whend.Surtido=1 andd.Venta_Monto>0 andd.Stock_unidades=0then1else0end) as Quiebre,

3 as Visioninto #Temporal2From #Temporal d

--selecte.Local_Key,f.Tiempo_Key,g.Producto_key,(case

whenh.Stock_unidades IS NULLthen0elseh.Stock_unidadesend) as Stock_unidades,

(casewhenh.Stock_valorizado is nullthen 0elseh.Stock_valorizadoend) as Stock_valorizado,

(casewhen h.Stock_minimo_unid IS NULL then0elseh.Stock_minimo_unidend) as Stock_minimo_und,

Page 4: Base de Datos

(casewhenh.Venta_Monto is nullthen0elseh.Venta_Montoend) as Venta_Monto,

(casewhenh.Venta_Unidades IS NULLthen0elseh.Venta_Unidadesend) as Venta_Unidades,

h.Surtido,h.MayorIgualStockMin,h.StockMayor0,h.Quiebre,h.Vision,(case

when h.Surtido=0then 1when h.StockMayor0=0then 2when h.MayorIgualStockMin=0then 3else4

end) AS SurtidoIncumpinto FJLMP_Fact_Finalfromdbo.FJLMP_Dim_Local e inner join#Temporal2 honh.Local_Codigo=e.Local_Codigo inner joindbo.FJLMP_Dim_Tiempo fonh.Fecha=f.Fecha inner joindbo.FJLMP_Dim_Producto gonh.Producto=g.Producto_Codigo

FACT FINAL OUTER

Select(case

when a.Local_Codigo is nullthen

casewhen b.Local_Codigo IS NULLthen c.Local_Codigoelse b.Local_Codigo end

elsea.Local_Codigo

Page 5: Base de Datos

end) as Local,

(casewhen a.Fecha is nullthen

casewhen b.Fecha IS NULLthen c.Fechaelse b.Fecha end

elsea.Fechaend) as Fecha,

(casewhen a.Producto_Codigo is nullthen

casewhen b.Producto_Codigo IS NULLthen c.Producto_Codigoelse b.Producto_Codigo end

elsea.Producto_Codigoend) as Producto,

a.Stock_unidades,a.Stock_valorizado,b.Stock_minimo_unid,c.Venta_Monto,c.Venta_Unidades,

(casewhen b.Stock_minimo_unid is nullthen0else1end) AS Surtido,

(casewhen a.Stock_unidades>=b.Stock_minimo_unidthen1else0end

) as MayorIgualStockMin,

(casewhena.Stock_unidades>0then1else0end) as StockMayor0

into #Temporalfrom

Page 6: Base de Datos

dbo.FJLMP_Stock_Producto a full outer joindbo.FJLMP_Surtido bona.Local_Codigo=b.Local_Codigo anda.Fecha=b.Fecha anda.Producto_Codigo=b.Producto_Codigofull outer joindbo.FJLMP_Venta_Producto conb.Local_Codigo=c.Local_Codigo andb.Fecha=c.Fecha andb.Producto_Codigo=c.Producto_Codigoora.Local_Codigo=c.Local_Codigo anda.Fecha=c.Fecha anda.Producto_Codigo=c.Producto_Codigo

--Selectd.*,(case

whend.Surtido=1 andd.Venta_Monto>0 andd.Stock_unidades=0then1else2end) as Quiebre,

3 as Visioninto #Temporal2From #Temporal d------------------------------------------------------selecte.Local_Key,f.Tiempo_Key,g.Producto_key,(case

whenh.Stock_unidades IS NULLthen0elseh.Stock_unidadesend) as Stock_unidades,

(casewhenh.Stock_valorizado is nullthen 0elseh.Stock_valorizadoend) as Stock_valorizado,

(casewhen h.Stock_minimo_unid IS NULL then0else

Page 7: Base de Datos

h.Stock_minimo_unidend) as Stock_minimo_und,

(casewhenh.Venta_Monto is nullthen0elseh.Venta_Montoend) as Venta_Monto,

(casewhenh.Venta_Unidades IS NULLthen0elseh.Venta_Unidadesend) as Venta_Unidades,

h.Surtido,h.MayorIgualStockMin,h.StockMayor0,h.Quiebre,h.Visioninto FJLMP_Fact_Finalfromdbo.FJLMP_Dim_Local e inner join#Temporal2 honh.Local=e.Local_Codigo inner joindbo.FJLMP_Dim_Tiempo fonh.Fecha=f.Fecha inner joindbo.FJLMP_Dim_Producto gonh.Producto=g.Producto_Codigo

FACT PRESUPUSTO

select a.Fecha, a.Local_Codigo,b.Familia_Codigo,c.Producto_Codigo, c.Venta_Monto,

c.Venta_Unidadesinto #temporalfrom dbo.FJLMP_Presupuesto_Mensual a inner join dbo.FJLMP_Dim_Producto bon b.Familia_Codigo=a.Familia_Codigoinner joinFJLMP_Venta_Producto cona.Fecha=c.Fecha andc.Producto_Codigo=b.Producto_Codigo anda.Local_Codigo=c.Local_Codigoorder bya.Fecha,

Page 8: Base de Datos

a.Local_Codigo,a.Familia_Codigo,b.Producto_Codigo

--select d.Fecha, d.Local_Codigo, d.Familia_Codigo, d.Producto_Codigo, d.Venta_Monto, d.Venta_Unidades,d.Venta_Monto/e.Total_Venta as Peso_Valor,convert(decimal(18,2),convert(decimal(18,2),d.Venta_Unidades)/convert(decimal(18,2),e.Total_Unid)) as Peso_undinto #temporal2from#temporal d inner join(

select Fecha, Local_Codigo, Familia_Codigo, SUM(Venta_Monto) as Total_Venta,

SUM(Venta_Unidades) as Total_Unidfrom#temporal dgroup byd.Fecha,d.Local_Codigo,d.Familia_Codigo

) eond.Fecha=e.Fecha andd.Local_Codigo=e.Local_Codigo andd.Familia_Codigo=e.Familia_Codigo

--select f.*,convert(decimal(18,2),f.Peso_Valor*g.Venta_Valor) as Venta_Valor_Presu,convert(decimal(18,2),f.Peso_und*g.Venta_Unidad) as Venta_Und_Presuinto #temporal3from#temporal2 f inner joindbo.FJLMP_Presupuesto_Mensual gonf.Fecha=g.Fecha andf.Local_Codigo=g.Local_Codigo andf.Familia_Codigo=g.Familia_Codigo

--selectg.Tiempo_key, i.Local_key, j.Familia_key, k.Producto_key, h.Venta_Monto, h.Venta_Unidades, h.Peso_Valor, h.Peso_und,h.Venta_Valor_Presu, h.Venta_Und_Presuinto dbo.FJLMP_Fact_Presupuestofromdbo.FJLMP_Dim_Tiempo g inner join#temporal3 honh.Fecha=g.Fecha inner joindbo.FJLMP_Dim_Local ionh.Local_Codigo=i.Local_Codigo inner joindbo.FJLMP_Dim_Familia j onh.Familia_Codigo=j.Familia_Codigo inner joindbo.FJLMP_Dim_Producto konh.Producto_Codigo=k.Producto_Codigo

Page 9: Base de Datos

select * from dbo.FJLMP_Fact_Final

FACT VENTA PROMEDIO

drop Table #Temporalcreate table #Temporal(

Fecha date,Local_key int,Producto_key int,Venta_Promedio_Soles decimal(18,2),Venta_Promedio_Unid decimal(18,2)

)declare @fecha varchar(max)declare @i intset @i = 1while @i <= 30beginset @fecha = LEFT('2014/11/'+(convert(varchar(max),@i)),10)--print @fecha

insert into #Temporalselect@fecha as Fecha,b.Local_Key,c.Producto_key,SUM(a.Venta_Monto)/@i as Venta_Promedio_Soles,SUM(a.Venta_Unidades)/@i as Venta_Promedio_Unid

fromdbo.FJLMP_Dim_Local b inner joindbo.FJLMP_Venta_Producto aona.Local_Codigo=b.Local_Codigo inner joindbo.FJLMP_Dim_Producto cona.Producto_Codigo=c.Producto_Codigowhere a.Fecha<=@fechagroup byb.Local_Key,c.Producto_key

set @i = @i +1 end

--selecte.Tiempo_Key,d.Local_key,

Page 10: Base de Datos

d.Producto_key,d.Venta_Promedio_Soles,d.Venta_Promedio_Unid into FJLMP_Fact_Venta_Promediofrom#Temporal d inner joindbo.FJLMP_Dim_Tiempo eond.Fecha=e.Fecha