Tomando como ejemplo las tablas que tienes hice lo siguiente:
Código SQL:
Ver originalCREATE TABLE #ventas
(
id_venta INT,
fecha_venta DATE
)
CREATE TABLE #pedidos
(
id_pedido INT,
id_producto INT,
id_venta INT,
cantidad INT
)
CREATE TABLE #productos
(
id_producto INT,
id_categoria INT,
precio INT
)
CREATE TABLE #categorias
(
id_categoria INT,
descripcion Nvarchar(20)
)
INSERT INTO #ventas VALUES (1,getdate())
INSERT INTO #ventas VALUES (2,dateadd(dd,1,getdate()))
INSERT INTO #pedidos VALUES (1,1,1,10)
INSERT INTO #pedidos VALUES (2,1,1,4)
INSERT INTO #pedidos VALUES (3,2,2,5)
INSERT INTO #pedidos VALUES (4,1,2,3)
INSERT INTO #productos VALUES (1,1,8)
INSERT INTO #productos VALUES (2,2,10)
INSERT INTO #categorias VALUES (1,'Tacos')
INSERT INTO #categorias VALUES (2,'Bebidas')
SELECT SUM(total) AS total_categoria, descripcion, fecha_venta FROM(
SELECT t2.id_pedido, t2.cantidad*t3.precio AS total, t4.descripcion, t1.fecha_venta
FROM #ventas AS t1
INNER JOIN #pedidos AS t2 ON (t1.id_venta=t2.id_venta)
INNER JOIN #productos AS t3 ON (t2.id_producto=t3.id_producto)
INNER JOIN #categorias AS t4 ON (t3.id_categoria=t4.id_categoria)
) AS completa GROUP BY descripcion,fecha_venta
Y con ese query obtengo esto:
total_categoria descripcion fecha_venta
112 Tacos 2016-12-14
50 Bebidas 2016-12-15
24 Tacos 2016-12-15
Que es lo que necesitas no???