我創建了SalesMonth函數,該函數接收月份編號和年份編號作爲參數,並顯示月份和年份中銷售的產品的總計列表作爲參數傳遞。該清單顯示以下產品信息:標識符,月份,年份,總售出數量,平均單價,總折扣和總銷售額。將本月的銷售額與上個月進行比較 - 功能 - T-SQL
按照下面的代碼:
CREATE FUNCTION SalesMonth (@month int, @year int)
RETURNS TABLE
AS
RETURN (
SELECT
AdventureWorks.Sales.SalesOrderDetail.ProductID,
MONTH(AdventureWorks.Sales.SalesOrderHeader.OrderDate) as 'Mes',
YEAR(AdventureWorks.Sales.SalesOrderHeader.OrderDate) as 'Ano',
SUM(AdventureWorks.Sales.SalesOrderDetail.OrderQty) as 'Quantidade Total Vendida',
AVG(AdventureWorks.Sales.SalesOrderDetail.UnitPrice) as 'Preco Unitario Médio',
SUM(AdventureWorks.Sales.SalesOrderDetail.UnitPriceDiscount) as 'Desconto Total',
SUM(AdventureWorks.Sales.SalesOrderDetail.LineTotal) as 'Valor Total Vendido'
FROM
AdventureWorks.Sales.SalesOrderDetail
INNER JOIN
AdventureWorks.Sales.SalesOrderHeader
ON
AdventureWorks.Sales.SalesOrderHeader.SalesOrderID = AdventureWorks.Sales.SalesOrderDetail.SalesOrderID
WHERE
MONTH(AdventureWorks.Sales.SalesOrderHeader.OrderDate) = @month
AND
YEAR(AdventureWorks.Sales.SalesOrderHeader.OrderDate) = @year
GROUP BY
AdventureWorks.Sales.SalesOrderDetail.ProductID,
MONTH(AdventureWorks.Sales.SalesOrderHeader.OrderDate),
YEAR(AdventureWorks.Sales.SalesOrderHeader.OrderDate)
)
現在我需要比較哪些項目必須比前一個月的銷售額增長。我想過做這樣的事情:
SELECT *
FROM SalesMonth(10, 2001)
WHERE SumPrice > (SELECT SumPrice FROM SalesMonth(9, 2001))
我知道這是一個嚴重的錯誤,但我想不出任何這樣的事情。有沒有人有類似的問題這個問題的想法?
有什麼錯呢? – McNets
SQL錯誤[512] [S0001]:子查詢返回多個值。當子查詢遵循=,!=,<, <= , >,> =或當子查詢用作表達式時,這是不允許的。 – mdcg