在SQL Server中获得不同的顶部1列



我正在为SQL Server 2014中的项目编写一个存储过程,我有此代码:

ALTER PROCEDURE FOF_MejorVendedor
AS
BEGIN
    SELECT TOP 1 
        F.Nombre, Em.Nombre, (P.Precio * CA.Cantidad)  as 'Ganancia' 
    FROM
        dbo.FO_Carrito CA
    JOIN 
        dbo.FO_Solicitud S on S.ID = CA.FK_SolicitudC
    JOIN 
        dbo.FO_Recibo R ON R.FK_Solicitud = S.ID
    JOIN 
        dbo.FO_Productos P ON P.ID = CA.FK_ProductosC 
    JOIN 
        dbo.FO_Cliente C ON C.ID = S.FK_Cliente
    JOIN 
        dbo.FO_Estante E ON E.FK_Producto = P.ID
    JOIN 
        dbo.FO_PasilloXDepartamento PD ON PD.FK_Estante = E.NumeroEstante
    JOIN 
        dbo.FO_Encargado En ON En.ID = PD.FK_Encargado
    JOIN 
        dbo.FO_Empleado Em ON Em.ID = En.FK_EmpleadoE 
    JOIN
        dbo.FO_Departamento D ON D.ID = PD.FK_Departamento
    JOIN 
        dbo.FO_Ferreteria F ON D.FK_Ferreteria = F.ID
    JOIN 
        dbo.FO_EmpleadosXFerreteria EF ON EF.FK_Ferreterias = F.ID 
    GROUP BY
        F.Nombre, Em.Nombre, (P.Precio * CA.Cantidad)
    ORDER BY 
        Ganancia DESC
END

,但我只获得了" ganancia"的前1个,但我想在" f.nombre"列中为每个独特的值获得它。如何修改查询?

您正在检索顶部记录,因为您使用Top 1子句,您是否相信!

所以删除它,

 Group by

将显示结果不同。

最新更新