У меня есть эта процедура
ALTER PROCEDURE spConsultaPorcentagem
@usuario nvarchar(60) = NULL,
@dataEmissao datetime,
@dataSaida datetime,
@ordem nvarchar(50)
AS
BEGIN
SELECT NFI.ID_Produto, SUM(NFI.Quantidade) AS Quantidade, MIN(PS.Descricao) AS Nome, MAX(NFI.ValorUnitario) AS Valor,
SUM(NFI.ValorTotal) AS ValorTotal, cast(SUM(NFI.ValorTotal)*100/SUM(SUM(NFI.ValorTotal)) OVER () AS decimal(10,3)) AS Porcentagem,
SUM(SUM(NFI.ValorTotal)) OVER() AS ValorFinal
// INNER JOINS
ORDER BY
CASE WHEN @ordem = 'alfabetica' THEN Nome END,
CASE WHEN @ordem = 'quantidade' THEN Quantidade END DESC,
CASE WHEN @ordem = 'valor' THEN ValorTotal END DESC
END
, но возвращается неверное имя столбца на Nome
и Имя столбца с неопределенностью на ValorTotal
, Почему?
РЕДАКТИРОВАТЬ 1
Я решил это, сделав это
CASE WHEN @ordem = 'alfabetica' THEN MIN(PS.Descricao) END,
CASE WHEN @ordem = 'quantidade' THEN SUM(NFI.Quantidade) END DESC,
CASE WHEN @ordem = 'valor' THEN SUM(NFI.ValorTotal) END DESC