我有这个问题:
declare @usuario as varchar(50), @fecha as datetime
set @usuario ='angel'
set @fecha ='2011/08/07'
select DetalleCompra .id_ali as [Clave],Alimento .nomAli as [Nombre Alimento],
(select sum (cantidad)
from DetalleCompra
inner join Alimento on DetalleCompra .id_ali =Alimento .id_ali
where DetalleCompra .usuario =@usuario and fecha =@fecha and FolioCompra is null
) as Cantidad,
Alimento .precio as [Precio Unitario], ( sum (Cantidad) * precio ) as [Precio Total]
from DetalleCompra , Alimento
where DetalleCompra .id_ali =Alimento.id_ali
and usuario =@usuario and fecha =CONVERT(datetime, @fecha ) and FolioCompra is null
group by DetalleCompra .id_ali ,Alimento .nomAli , Alimento .precio , DetalleCompra .Cantidad
其中:
usuario=user
fecha=date
detallecompra=details buy
idali= id food
nomali=food's name
foliocompra=folio purchases
precio=price
cantidad=quantity
precio total=total price
我想获得一个列表,但如果产品相同,我想总结它们并获得它们的总价。
他们有一个用户名和一个日期,在用户“接受”它们之前它们是空的。
我希望获得idali
出现两次或更多次的列表,他们对该行求和,并将总价格相加。
答案 0 :(得分:2)
我相信你正在寻找这样的东西。
查询按ID(id_ali
),名称(nomAli
)和价格(precio
)列对数据进行分组。然后它总结了数量(cantidad)来创建Total Quantity
列(我刚用英文写的)。此外,使用数量和价格列制定Precio Total
列。
如果列fecha仅包含没有任何时间戳的日期值,则可以使用简单等于比较而不是使用DATEDIFF。
DECLARE @usuario AS VARCHAR(50)
DECLARE @fecha AS DATETIME
SET @usuario ='angel'
SET @fecha ='2011/08/07'
SELECT dc.id_ali AS [Clave]
, al.nomAli AS [Nombre Alimento]
, al.precio AS [Precio Unitario]
, SUM(cantidad) AS [Total Quantity]
, SUM(cantidad) * al. precio as [Precio Total]
FROM DetalleCompra dc
INNER JOIN Alimento al
ON dc.id_ali = al.id_ali
WHERE usuario = @usuario
AND FolioCompra is null
AND DATEDIFF(DAY, fecha, @fecha) = 0
GROUP BY dc.id_ali
, al.nomAli
, al.precio