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;
那你应该没问题。
我有以下查询在 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;
那你应该没问题。