Este es un ejemplo de cómo se puede hacer una tablara para poder mostrar los monto de los articulos por mes, el ejemplo fue realizado con case, este es un emjemplo muy bueno ya que te describe como se pueden hacer las tablas de acomulados.
--Tablas Temporal
SET DATEFORMAT YMD; -- Describe el formato de fecha
CREATE TABLE#VENTA(ID_CLIENTEVARCHAR(30),NO_ARTICULOVARCHAR(10) , FECHADATETIME , UNIDADES INT)
INSERT INTO #VENTAVALUES ('BACARDI' ,'P3-16','2001-1-16',30393)
INSERT INTO #VENTAVALUES ('CUERVO' ,'P3-16','2001-1-16',10000)
INSERT INTO #VENTAVALUES ('SAUZA' ,'B2-10','2001-2-13',88674)
INSERT INTO #VENTAVALUES ('CUERVO' ,'B2-10','2001-3-14',1378)
INSERT INTO #VENTAVALUES ('XP-SXT' ,'ZK-23','2001-4-1' ,9906)
INSERT INTO #VENTAVALUES ('HT' ,'P3-16','2001-4-12',1074)
INSERT INTO #VENTAVALUES ('MODERADO','XUO-13','2001-2-17',5941)
INSERT INTO #VENTAVALUES ('SAUZA' ,'P3-16','2001-4-18',1478)
SELECT * FROM #VENTA -- MUESTRA TODOS LOS DATOS
--CORESPONDE AL AÑO DE2001
SELECT ID_CLIENTE ASCLIENTE ,
sum(CASE WHENMONTH(FECHA) = 1 THENUNIDADES ELSE 0 END) ASEne,
sum(CASE WHENMONTH(FECHA) = 2 THENUNIDADES ELSE 0 END) ASFeb,
sum(CASE WHENMONTH(FECHA) = 3 THENUNIDADES ELSE 0 END) ASMar,
sum(CASE WHENMONTH(FECHA) = 4 THENUNIDADES ELSE 0 END) ASAbr,
sum(CASE WHENMONTH(FECHA) = 5 THENUNIDADES ELSE 0 END) ASMay,
sum(CASE WHENMONTH(FECHA) = 6 THENUNIDADES ELSE 0 END) ASJun,
sum(CASE WHENMONTH(FECHA) = 7 THENUNIDADES ELSE 0 END) ASJul,
sum(CASE WHENMONTH(FECHA) = 8 THENUNIDADES ELSE 0 END) ASAgo,
sum(CASE WHENMONTH(FECHA) = 9 THENUNIDADES ELSE 0 END) ASSep,
sum(CASE WHENMONTH(FECHA) = 10 THENUNIDADES ELSE 0 END) ASOct,
sum(CASE WHENMONTH(FECHA) = 11 THENUNIDADES ELSE 0 END) ASNov,
sum(CASE WHENMONTH(FECHA) = 12 THENUNIDADES ELSE 0 END) ASDic
FROM #VENTA
WHERE FECHA between'20010116' and '20011231'
GROUP BY ID_CLIENTE -- OREDENA POR CLIENTE
ORDER BY 1 -- OREDENA LOS REGSITROS
DELETE FROM #VENTA -- BORRAR DATOS TEMPORELES
DROP TABLE #VENTA -- BORRAR TABLA
ok esto es bastaste largo la ventaja que nos ofrese el pivot es la siguiente
SELECT txt_cliente ,txt_desc_cliente , txt_articulo,ISNULL([1],0) 'txt_ene',ISNULL([2],0) 'txt_feb', ISNULL([3],0) 'txt_mar', ISNULL([4],0) 'txt_abr',
ISNULL([5],0) 'txt_may', ISNULL([6],0) 'txt_jun', ISNULL([7],0) 'txt_jul', ISNULL([8],0) 'txt_ago', ISNULL([9],0) 'txt_sep', ISNULL([10],0) 'txt_oct', ISNULL([11],0) 'txt_nov', ISNULL([12],0) 'txt_dic'
FROM (
SELECT V.ID_CLIENTE AS'txt_cliente' ,
C.COLUMN_DESC_CLIENTE2AS 'txt_desc_cliente',
NO_ARTICULO AS'txt_articulo',
MONTH(FECHA) AS 'MES' ,
UNIDADES AS 'UNIDADES'
FROM VENTA V , CLIENTE C
WHERE V.ID_CLIENTE =C.ID_CLIENTE
AND FECHA between'20080101' and '20081231'
GROUP BY C.COLUMN_DESC_CLIENTE2, V.ID_CLIENTE ,V.NO_ARTICULO , V.FECHA, V.UNIDADES )COLUMNAS
PIVOT ( SUM(UNIDADES)FOR MES IN ([1], [2], [3], [4],[5],[6], [7], [8], [9], [10], [11], [12]) )AS PT
ORDER BY txt_desc_cliente
No hay comentarios:
Publicar un comentario