SQL Server将所有具有相同行名的行相加

时间:2016-11-30 04:29:15

标签: sql-server procedure

我正在做一个项目,我坚持使用这个存储过程,我正在使用SQL Server 2014:

ALTER PROC FOF_FerreteriaMasGanancia
AS
BEGIN
    SELECT 
        F.Nombre, (P.Precio * CA.Cantidad)  as 'Gananacia' 
    FROM
        FO_Carrito CA
    JOIN
        FO_Solicitud S ON S.ID = CA.FK_SolicitudC
    JOIN 
        FO_Recibo R ON R.FK_Solicitud = S.ID
    JOIN 
        FO_Productos P ON P.ID = CA.FK_ProductosC 
    JOIN 
        FO_Cliente C ON C.ID = S.FK_Cliente
    JOIN 
        FO_Estante E ON E.FK_Producto = P.ID
    JOIN 
        FO_PasilloXDepartamento PD ON PD.FK_Estante = E.NumeroEstante 
    JOIN 
        dbo.FO_Departamento D ON D.ID = PD.FK_Departamento
    JOIN 
        dbo.FO_Ferreteria F ON D.FK_Ferreteria = F.ID
    GROUP BY
        F.Nombre, (P.Precio * CA.Cantidad) 
    ORDER BY 
        (P.Precio * CA.Cantidad) DESC
END

我得到了这个:

Ferreteria2 12
Ferreteria2 10
Ferreteria5 8
Ferreteria5 6
Ferreteria2 5
Ferreteria5 4
Ferreteria1 3
Ferreteria4 2
Ferreteria1 1

我怎样才能得到这个呢?

Ferreteria2 27
Ferreteria5 18
Ferreteria1 4
Ferreteria4 2

1 个答案:

答案 0 :(得分:3)

我以为你在P.PRECIO * CA.CANTIDAD做总结。所以我修改如下。

 ALTER PROC Fof_ferreteriamasganancia
    AS
      BEGIN
          SELECT F.NOMBRE,
                 Sum(P.PRECIO * CA.CANTIDAD) AS 'GANANACIA'
          FROM   FO_CARRITO CA
                 JOIN FO_SOLICITUD S
                   ON S.ID = CA.FK_SOLICITUDC
                 JOIN FO_RECIBO R
                   ON R.FK_SOLICITUD = S.ID
                 JOIN FO_PRODUCTOS P
                   ON P.ID = CA.FK_PRODUCTOSC
                 JOIN FO_CLIENTE C
                   ON C.ID = S.FK_CLIENTE
                 JOIN FO_ESTANTE E
                   ON E.FK_PRODUCTO = P.ID
                 JOIN FO_PASILLOXDEPARTAMENTO PD
                   ON PD.FK_ESTANTE = E.NUMEROESTANTE
                 JOIN DBO.FO_DEPARTAMENTO D
                   ON D.ID = PD.FK_DEPARTAMENTO
                 JOIN DBO.FO_FERRETERIA F
                   ON D.FK_FERRETERIA = F.ID
          GROUP  BY F.NOMBRE
          ORDER  BY 2 DESC
      END