-1
我想创建一个存储过程spSumInvoices
,它将接收感兴趣的供应商ID并打印出供应商的名称和他们所有发票的总和。为什么这是')'导致错误?
这是我使用的代码,不知道它的权利我是新来的存储过程:
IF OBJECT_ID ('spSumInvoices') IS NOT NULL
DROP PROC spSumInvoices;
GO
CREATE PROC spSumInvoices
@FindVen int,
@InvoiceTotal Money,
@VenName VARCHAR
AS
BEGIN
SELECT
@FindVen, SUM(InvoiceTotal) AS 'Total', @VenName
FROM
Vendors,Invoices
WHERE
Invoices.VendorID = @FindVen
GROUP BY
@InvoiceTotal
END
PRINT 'Vendor' + @VenName
PRINT 'Has an invoice total of $' + CONVERT(VARCHAR,@InvoiceTotal);
我得到这个错误:
Msg 164, Level 15, State 1, Procedure spSumInvoices, Line 15
Each GROUP BY expression must contain at least one column that is not an outer reference.
您的'CONVERT'缺少目标数据类型参数。你应该完全删除它,因为你不需要它'VendorName'。 – Filburt
如果我把一个数据类型,这将是varchar它给了我这个错误:名称“VenderName”是不允许在这种情况下。有效表达式是常量,常量表达式和(在某些情况下)变量。列名不被允许。 @Filburt –
不应该'选择VenderName,SUM(InvoiceTotal)'......它不清楚'Vendername'的来源。 – Filburt