--CONSULTAS CONDICIONALES
-- CONDICIONALES DE FILAS - WHERE [COND]
--1 CLIENTES DE ARGENTINA O VENEZUELA.
SELECT NombreCompañía
FROM Clientes WHERE País='ARGENTINA' OR
País='VENEZUELA'
--2 PRODUCTOS VENDIDOS EN EL BIMESTRE 2 DEL 97
SELECT DISTINCT NombreProducto
FROM Productos P INNER JOIN
[Detalles de pedidos] D
ON [Link]=[Link] INNER JOIN
Pedidos T ON [Link]=[Link]
WHERE YEAR(FECHAPEDIDO)=1997 AND
(DATEPART(M,FECHAPEDIDO)+1)/2=2
--3. CLIENTES DE LOS PAISES ANDINOS
SELECT NombreCompañía
FROM Clientes
WHERE País IN ('VENEZUELA','COLOMBIA',
'ECUADOR','PERú','BOLIVIA')
--2 CONDICIONAMIENTO DE GRUPO: UNION DE FILAS
-- NRO DE PEDIDOS POR PAIS >50
SELECT País, COUNT(IDPEDIDO) NPEDIDOS
FROM CLIENTES C INNER JOIN Pedidos P
ON [Link]=[Link]
GROUP BY País HAVING COUNT(IDPEDIDO) >50
-- PAISES CON VENTAS >100000 UM
SELECT País, SUM(CANTIDAD*PRECIOUNIDAD) VENTAS
FROM CLIENTES C INNER JOIN Pedidos P
ON [Link]=[Link] INNER JOIN
[Detalles de pedidos] D
ON [Link]=[Link]
GROUP BY País
HAVING SUM(CANTIDAD*PRECIOUNIDAD) >100000
--CONDICIONAMIENTO DE COLUMNAS.
-- CASE WHEN THEN ELSE END
-- CLASIFICAR A EMPLEADOS EN BASE A NRO PEDIDOS
-- SI >100 SON 'B', SI <20 ES 'M' CASO CONTRARIO 'R'
SELECT Apellidos+' '+Nombre EMPLEADO,
TIPOEMP=CASE WHEN COUNT(IDPEDIDO)>100
THEN 'B' WHEN COUNT(IDPEDIDO)<45 THEN 'M'
ELSE 'R' END,
COUNT(IDPEDIDO) NPEDIDOS
FROM EMPLEADOS E INNER JOIN Pedidos P
ON [Link]=[Link]
GROUP BY Apellidos+' '+Nombre
ORDER BY TIPOEMP
-- VENTAS POR PAISES POR AÑOS MATRICIAL
SELECT País,
AÑO1=SUM(CASE WHEN YEAR(FECHAPEDIDO)=1996
THEN CANTIDAD*PRECIOUNIDAD ELSE 0 END),
AÑO2=SUM(CASE WHEN YEAR(FECHAPEDIDO)=1997
THEN CANTIDAD*PRECIOUNIDAD ELSE 0 END),
AÑO3=SUM(CASE WHEN YEAR(FECHAPEDIDO)=1998
THEN CANTIDAD*PRECIOUNIDAD ELSE 0 END),
AÑO4=SUM(CASE WHEN YEAR(FECHAPEDIDO)=1999
THEN CANTIDAD*PRECIOUNIDAD ELSE 0 END),
AÑO5=SUM(CASE WHEN YEAR(FECHAPEDIDO)=2000
THEN CANTIDAD*PRECIOUNIDAD ELSE 0 END),
SUM(CANTIDAD*PRECIOUNIDAD) VENTAS
FROM CLIENTES C INNER JOIN Pedidos P
ON [Link]=[Link] INNER JOIN
[Detalles de pedidos] D
ON [Link]=[Link]
GROUP BY País WITH ROLLUP
-- 1. PRODUCTOS VENDIDOS EL AGOSTO DEL 97
SELECT DISTINCT NombreProducto
FROM Productos p INNER JOIN
[Detalles de pedidos] D ON [Link]=[Link]
INNER JOIN Pedidos T ON [Link]=[Link]
WHERE YEAR(FECHAPEDIDO)=1997 AND
MONTH(FECHAPEDIDO)=8
-- 2. VENTAS POR CATEGORIAS DE PROD PARA
-- IMPORTES >500
SELECT NombreCategoría,
SUM(VENTAS) TVENTAS FROM
(SELECT NombreCategoría,IDPEDIDO,[Link],
SUM(CANTIDAD*[Link]) VENTAS
FROM Productos p INNER JOIN
[Detalles de pedidos] D ON [Link]=[Link]
INNER JOIN Categorías T ON [Link]ía=[Link]ía
GROUP BY NombreCategoría,IDPEDIDO,[Link]
HAVING SUM(CANTIDAD*[Link]) >500) T
GROUP BY NombreCategoría WITH ROLLUP
-- 3. VENTAS POR AÑO Y BIMESTRE MATRICIAL
SELECT YEAR(FECHAPEDIDO) AÑO,
BIM1=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=1
THEN CANTIDAD*[Link] ELSE 0 END),
BIM2=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=2
THEN CANTIDAD*[Link] ELSE 0 END),
BIM3=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=3
THEN CANTIDAD*[Link] ELSE 0 END),
BIM4=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=4
THEN CANTIDAD*[Link] ELSE 0 END),
BIM5=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=5
THEN CANTIDAD*[Link] ELSE 0 END),
BIM6=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=6
THEN CANTIDAD*[Link] ELSE 0 END),
SUM(CANTIDAD*[Link]) VENTAS
FROM Productos p INNER JOIN
[Detalles de pedidos] D ON [Link]=[Link]
INNER JOIN Pedidos T ON [Link]=[Link]
GROUP BY YEAR(FECHAPEDIDO) WITH ROLLUP
-- CREAR VISTAS O PROCEDIMIENTOS
-- CREAR VISTA
CREATE VIEW VTASXAXB
AS
SELECT YEAR(FECHAPEDIDO) AÑO,
BIM1=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=1
THEN CANTIDAD*[Link] ELSE 0 END),
BIM2=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=2
THEN CANTIDAD*[Link] ELSE 0 END),
BIM3=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=3
THEN CANTIDAD*[Link] ELSE 0 END),
BIM4=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=4
THEN CANTIDAD*[Link] ELSE 0 END),
BIM5=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=5
THEN CANTIDAD*[Link] ELSE 0 END),
BIM6=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=6
THEN CANTIDAD*[Link] ELSE 0 END),
SUM(CANTIDAD*[Link]) VENTAS
FROM Productos p INNER JOIN
[Detalles de pedidos] D ON [Link]=[Link]
INNER JOIN Pedidos T ON [Link]=[Link]
GROUP BY YEAR(FECHAPEDIDO) WITH ROLLUP
--USAR VISTA BD
SELECT * FROM VTASXAXB
--MODIFICAR VTA
ALTER VIEW VTASXAXB
AS
SELECT YEAR(FECHAPEDIDO) AÑOS,
BIM1=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=1
THEN CANTIDAD*[Link] ELSE 0 END),
BIM2=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=2
THEN CANTIDAD*[Link] ELSE 0 END),
BIM3=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=3
THEN CANTIDAD*[Link] ELSE 0 END),
BIM4=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=4
THEN CANTIDAD*[Link] ELSE 0 END),
BIM5=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=5
THEN CANTIDAD*[Link] ELSE 0 END),
BIM6=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=6
THEN CANTIDAD*[Link] ELSE 0 END),
SUM(CANTIDAD*[Link]) TVENTAS
FROM Productos p INNER JOIN
[Detalles de pedidos] D ON [Link]=[Link]
INNER JOIN Pedidos T ON [Link]=[Link]
GROUP BY YEAR(FECHAPEDIDO) WITH ROLLUP
--CREA PROCEDIMIENTO ALMACENADO STORE PROCEDURE
CREATE PROC P_VTASXBXAE
@AÑO INT=NULL , @NOMPROD VARCHAR(25)=NULL
AS
SELECT YEAR(FECHAPEDIDO) AÑOS,
BIM1=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=1
THEN CANTIDAD*[Link] ELSE 0 END),
BIM2=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=2
THEN CANTIDAD*[Link] ELSE 0 END),
BIM3=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=3
THEN CANTIDAD*[Link] ELSE 0 END),
BIM4=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=4
THEN CANTIDAD*[Link] ELSE 0 END),
BIM5=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=5
THEN CANTIDAD*[Link] ELSE 0 END),
BIM6=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=6
THEN CANTIDAD*[Link] ELSE 0 END),
SUM(CANTIDAD*[Link]) TVENTAS
FROM Productos p INNER JOIN
[Detalles de pedidos] D ON [Link]=[Link]
INNER JOIN Pedidos T ON [Link]=[Link]
WHERE YEAR(FECHAPEDIDO)= @AÑO OR YEAR(FECHAPEDIDO)= @AÑO-1
AND NombreProducto LIKE @NOMPROD
GROUP BY YEAR(FECHAPEDIDO) WITH ROLLUP
--USAR PROCEDIMIENTO
EXEC P_VTASXBXAE 1997,'TE%'
P_VTASXBXAE 1997,'TE%'