2011-07-22 20 views
0

这是我的查询:如何把所有行的总和每一行

SELECT clientes.nombre as [NombreCliente], 
     venta.usuario as [NombreVendedor], 
     SUM((listaventa.precio)) as [FinalTotal], 
     venta.id as [IdVenta], 
     venta.fecha as [Fecha], 
     idproducto as [clave], 
     producto.descripcion , 
     listaventa.precio as [preciounitario], 
     listaventa.cantidad, 
     listaventa.total as [PrecioTtoal] 
FROM venta 
JOIN clientes on venta.idcliente = clientes.id 
JOIN listaventa on listaventa.idventa=venta.id 
JOIN producto on listaventa .idproducto =producto.id 
WHERE venta.id ='36' 
GROUP BY clientes.nombre, venta.usuario, venta.id, venta.fecha, listaventa.idproducto, producto.descripcion, listaventa.precio, listaventa.cantidad, listaventa.total 

问题是,我不明白的是总和,因为查询是ID确认ID,它永远不会返回总和(listaventa.precio)它返回的结果与每个产品的cantidad * preciou相同,但它不会总和它。否则,如果我尝试它

SELECT clientes.nombre as [NombreCliente], 
     venta.usuario as [NombreVendedor], 
     SUM((listaventa.precio)) as [FinalTotal], 
     venta.id as [IdVenta], 
     venta.fecha as [Fecha], 
     idproducto as [clave], 
     producto.descripcion , 
     listaventa.precio as [preciounitario], 
     listaventa.cantidad, 
     listaventa.total as [PrecioTtoal] 
    FROM venta 
    JOIN clientes on venta.idcliente = clientes.id 
    JOIN listaventa on listaventa.idventa=venta.id 
    JOIN producto on listaventa .idproducto =producto.id 
WHERE venta.id ='36' 
    AND venta.id IN (SELECT * 
         FROM listaventa 
        WHERE idventa = 36) 

我得到这个错误:

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

+1

你可能想澄清你是什么后,因为查询因为书面没有意义。 – JNK

+0

这没有意义。没有理由任何人想知道SUM(lista.precio)。 El de de los preciounitarios没有意义。 – hoodaticus

+0

可能的重复[只有一个表达式可以在选择列表中指定,当子查询没有与EXISTS引入。](http://stackoverflow.com/questions/1904314/only-one-expression-can-be-specified- (SELECT *'也许你的意思是'IN(SELECT id'?) –

回答

1

我觉得这是你要找的是什么,如果你想打印的订单/发票/收据/装箱单:

select  clientes.nombre as [NombreCliente], venta.usuario as [NombreVendedor], 
      venta.fecha, venta.id as [IdVenta], idproducto as [clave], 
      producto.descripcion, listaventa.precio as [preciounitario], 
      SUM(listaventa.cantidad) as [cantidad], 
      SUM(listaventa.total) as [LineaTotal], 
      (SELECT SUM(listaventa.total) FROM listaventa WHERE idventa = '36') 
      as [VentaTotal] 

from  venta 
inner join clientes on venta.idcliente = clientes.id 
inner join listaventa on listaventa.idventa = venta.id 
inner join producto on listaventa.idproducto = producto.id 

where  venta.id ='36' 

group by clientes.nombre, venta.usuario, venta.fecha, venta.id, 
      listaventa.idproducto, producto.descripcion, listaventa.precio 
+0

不,我真的很想知道总数是多少产品,但我想在所有行这个总和(这是一个水晶r eport) – angel

+0

啊,不要再说了。我通过添加一个VentaTotal列来编辑我的答案。 – hoodaticus

+0

非常好,这是我想要的 – angel

1

GROUP BY条款删除listaventa.precio

它应该为该字段生成正确的SUM,如果允许它进行聚合。

+0

然后我得到“列'listaventa.idproducto'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。” – angel

+0

它不应该在'SELECT'列表中,也可以删除它。你如何期望在同一行中获得字段和字段的聚合? – JNK