繁体   English   中英

SQL Server 2008 R2无效的对象名称错误

[英]SQL Server 2008 R2 Invalid object name error

这是我要实现的存储过程:

    Alter PROCEDURE pro_worst_supplier_test 
@datey nvarchar(4), @datem nvarchar(2)
   AS
   BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here

select y.CompanyName from (SELECT s.CompanyName,(select min(t.b) from (select (round(sum(OD.Quantity * (1-OD.Discount) * OD.UnitPrice),0)) as b from [Order Details] group by ProductID) t) as q
FROM ((((Products p 
inner join [Order Details] OD on p.ProductID=OD.ProductID) 
inner join Categories c on p.CategoryID=c.CategoryID) 
inner join Suppliers s on p.SupplierID=s.SupplierID)
inner join Orders o on o.OrderID=od.OrderID)
where c.CategoryName='Produce' AND SUBSTRING(CONVERT(nvarchar(22), o.OrderDate, 111),1,4)=@datey AND SUBSTRING(CONVERT(nvarchar(22),o.OrderDate, 111),6,2)=@datem
group by s.CompanyName) y
where q=(select MIN(q)from y) 
END 
GO

当我尝试执行时

exec proc_worst_supplier_test '1998','04'

我有一个错误

无效的对象名称“ y”

尝试这个:

;WITH CTE as (
SELECT s.CompanyName,(select min(t.b) from (select (round(sum(OD.Quantity * (1-OD.Discount) * OD.UnitPrice),0)) as b from [Order Details] group by ProductID) t) as q
FROM ((((Products p 
inner join [Order Details] OD on p.ProductID=OD.ProductID) 
inner join Categories c on p.CategoryID=c.CategoryID) 
inner join Suppliers s on p.SupplierID=s.SupplierID)
inner join Orders o on o.OrderID=od.OrderID)
where c.CategoryName='Produce' AND SUBSTRING(CONVERT(nvarchar(22), o.OrderDate, 111),1,4)=@datey AND SUBSTRING(CONVERT(nvarchar(22),o.OrderDate, 111),6,2)=@datem
group by s.CompanyName
)

select CompanyName from CTE where q=(select MIN(q) from CTE)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM