试图在我的NumberofUnits列中显示最大项目数,其中ProductDescription以字母P开头。我的目标是仅显示一个结果,它应该仅显示“ Pants”的一个实例,其中NumberOfUnits是最大的。相反,它产生多个实例,并且未显示任何实例的最大值。我尝试了两种不同的方法,但都没有产生我想要的结果。
我应该提到我的目标是针对我的表视图运行此存储过程。我如何解决此问题以获得所需的结果,甚至在针对表视图运行时是否甚至可以在存储过程中使用像MAX这样的聚合?如果是这样,我需要怎么做才能对其进行更改? (这是我班上的一个家庭作业问题)
首先,我创建了一个表视图和一个存储过程,试图以两种不同的方式解决这个问题。一种在存储过程中仅使用MAX函数,第二种仅在表视图中使用MAX函数。都没有产生我预期的结果。
-TableView尝试
create view [dbo].[inventoryinfo1_vw] as
select InventoryOrdering.NumberOfUnits, InventoryOrdering.DateOfOrder, Product.ProductDescription, Product.ListPrice, Supplier.Name, Supplier.PhoneNumber
from Supplier
join InventoryOrdering
on InventoryOrdering.SupplierID = Supplier.SupplierID
join Product
on Product.ProductNO = InventoryOrdering.ProductNO
group by DateofOrder, ProductDescription, ListPrice, Name, PhoneNumber
-存储过程尝试
create procedure MaxInfo
as
begin
select MAX(NumberOfUnits) AS 'Largest Quantity', ProductDescription
from [dbo].[inventoryinfo1_vw]
where ProductDescription LIKE 'P%'
group by ProductDescription
order by ProductDescription
end
我只希望看到以P开头的单元数最多的一行,而是产生两行,如何防止这种情况发生?
上面的代码导致以下结果:
Largest Quantity ProductDescription
8 Pants
12 Pants
答案 0 :(得分:0)
在您的视图中,像这样修改它:
create view [dbo].[inventoryinfo1_vw] as
select InventoryOrdering.NumberOfUnits, InventoryOrdering.DateOfOrder, TRIM(Product.ProductDescription) AS ProductDescription, Product.ListPrice, Supplier.Name, Supplier.PhoneNumber
-- etc