-1
Я пишу хранимую процедуру для проекта в SQL Server 2014 и у меня есть этот код:Получить Distinct топ 1 столбцов в SQL Server
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
Но я только получаю Top 1 из «Ganancia», но Я хочу получить его для каждого отдельного значения в столбце «F.Nombre». Как изменить запрос?
Удалить верх 1. Вы понимаете, что верхняя часть 1 возвращает только 1 строку вправо? Ваша группа будет группировать строки в группы. Удаление вершины 1 приведет к возврату отдельных строк для F.Nombre и Em.Nombre –
Я также предлагаю вам прекратить использование столбца с именем ID в каждой таблице. Это шаблон дизайна, с которым сложно работать. Имя столбца должно оставаться неизменным в каждой таблице. ProductID должен оставаться неизменным. Именование ваших столбцов как FK_ - плохая идея. Что произойдет, если это уже не внешний ключ? Вам либо нужно обновить весь свой код, либо жить с помощью столбца, который называется обманчивым. Внедрение использования в имя не является хорошим подходом к проектированию базы данных. –
Да, я знаю, но если я удалю TOP 1, он не группирует меня по отдельным экземплярам «F.Nombre» –