SQL 服务器排序依据程序

SQL Server order by in procedure

我有以下查询在 SQL 服务器中工作正常:

SELECT InvoiceID, SUM(UnitPrice)
FROM Sales.InvoiceLines
GROUP BY InvoiceID
ORDER BY InvoiceID

当我将其放入过程中时,order by 子句不被接受:

CREATE OR ALTER PROCEDURE dbo.ReportsSales
AS
    SET NOCOUNT ON
    BEGIN (
        SELECT InvoiceID, SUM(UnitPrice)
        FROM Sales.InvoiceLines
        GROUP BY InvoiceID
        ORDER BY InvoiceID)
END;

EXEC dbo.ReportsSales;

为什么会这样,有什么推荐的处理方法吗?

您不得在过程中的 SELECT 周围使用圆括号:

CREATE OR ALTER PROCEDURE dbo.ReportsSales
AS
BEGIN
    SET NOCOUNT ON;

    SELECT InvoiceID, SUM(UnitPrice)
    FROM Sales.InvoiceLines
    GROUP BY InvoiceID
    ORDER BY InvoiceID;
END;
GO

-- execute it
EXEC dbo.ReportsSales;

那你应该没问题。