错误:当EXISTS未引入子查询时,只能在选择列表中指定一个表达式 [英] Error: Only one expression can be specified in the select list when the subquery is not introduced with EXISTS

查看:81
本文介绍了错误:当EXISTS未引入子查询时,只能在选择列表中指定一个表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写了一个查询。它工作正常。 Bt现在我想使用该查询创建一个存储过程并获得类似的错误---当子查询没有用EXISTS引入时,只能在选择列表中指定一个表达式

我的代码是..

  create   procedure  [dbo]。[spCatalogPrinting] 
< span class =code-keyword> AS
开始
- 从tempCataloguePrinting1中删除
- 插入tempCataloguePrinting(RefNo,InvoiceNo,Grade,Pkgs,Kg,DespDate,ArrivedAndLiftedOn,LotNo,Val,SoldAt)
- insert into tempCataloguePrinting1(InvoiceNo)
- insert into tempCataloguePrinting(引用号,InvoiceNo,等级,PKGS,KG,DespDate,ArrivedAndLif tedOn,LotNo,Val,SoldAt,SaleNo,Valuation,Remarks)
选择

选择 ls.LotNo,sm.InvoiceNo,i.ItemName,
sm.PackingQuantityPcs,sm.GrossQuantityKgs,ih.BillDate,gi.ArrivalDate,
cl.CatalogueLotNo ,sm.ApproxRate,sm.Rate,dbo.GetCatalogueNo(ls.LotNo),' ss'' ss' 来自 StockMovement sm
内部 join CatalogLine cl on cl .Oid = sm.Oid
内部 join 项目i on i.Oid = TeaGrade
inner join LocationStatusWiseStock ls ls上的class =code-keyword>。 Oid = LotNos
内部 join GardenInvoice gi on gi.Oid = ls.InvoiceNo
inner join InvoiceHeader ih on ih.Oid = gi.Oid
inner join 目录c on cl.Catalog = c.Oid
inner join InvoiceHeader ihh on ihh.Oid = c.Oid

end
go

解决方案

< blockquote>

 中选择 * 

选择 ls.LotNo,sm.InvoiceNo,i.ItemName,
sm.PackingQuantityPc s,sm.GrossQuantityKgs,ih.BillDate,gi.ArrivalDate,
cl.CatalogueLotNo,sm.ApproxRate,sm.Rate,dbo.GetCatalogueNo(ls.LotNo),' ss'' ss' 来自 StockMovement sm
内部 join CatalogLine cl on cl.Oid = sm.Oid
inner join 项目i i.Oid = TeaGrade
inner join LocationStatusWiseStock ls on ls.Oid = LotNos
内部 加入 GardenInvoice gi on gi.Oid = ls.InvoiceNo
内部 加入 InvoiceHeader ih ih.Oid = gi .Oid
内部 join 目录c on cl.Catalog = c.Oid
inner join InvoiceHeader ihh ihh.Oid = c.Oid
)x









尝试这样..如果它不起作用。请告诉我


  alter   procedure  [dbo]。[spCatalogPrinting] 
AS
开始
删除 来自 tempCataloguePrinting

插入 tempCataloguePrinting
选择 ROW_NUMBER() OVER ORDER BY i.ItemName) As Row,ls.LotNo,sm.InvoiceNo,i.ItemName,
sm.PackingQuantityPcs,sm.GrossQuantityKgs,ih.BillDate,gi.ArrivalDate,
cl.CatalogueLotNo ,sm.ApproxRate,sm.Rate,dbo.GetCatalogueNo(ls.LotNo),dbo.Valuation(ls.LotNo),' StockMovement获取>
sm
inner join CatalogLine cl on cl.Oid = sm.Oid
内部 加入项目i i.Oid = TeaGrade
内部 join LocationStatusWiseStock ls on ls.Oid = LotNos
内部 加入 GardenInvoice gi gi.Oid = ls.InvoiceNo
inner join InvoiceHeader ih on ih.Oid = gi.Oid
inner join 目录c cl.Catalog = c.Oid
inner join InvoiceHeader ihh on ihh.Oid = c.Oid
end
go


I have written a query. it works fine. Bt now I want to create a store procedure using that query and getting error like---Only one expression can be specified in the select list when the subquery is not introduced with EXISTS
my code is..

create procedure [dbo].[spCatalogPrinting] 
AS
Begin
	--Delete from tempCataloguePrinting1
	--insert into tempCataloguePrinting(RefNo,InvoiceNo,Grade,Pkgs,Kg,DespDate,ArrivedAndLiftedOn,LotNo,Val,SoldAt)
	--insert into tempCataloguePrinting1(InvoiceNo)
	--insert into tempCataloguePrinting(RefNo,InvoiceNo,Grade,Pkgs,Kg,DespDate,ArrivedAndLiftedOn,LotNo,Val,SoldAt,SaleNo,Valuation,Remarks)
	select 
	(
		select ls.LotNo,sm.InvoiceNo,i.ItemName,
		sm.PackingQuantityPcs,sm.GrossQuantityKgs,ih.BillDate,gi.ArrivalDate,
		cl.CatalogueLotNo,sm.ApproxRate,sm.Rate,dbo.GetCatalogueNo(ls.LotNo),'ss','ss' from StockMovement sm		
		inner join CatalogLine cl on cl.Oid= sm.Oid
		inner join Item i on i.Oid = TeaGrade
		inner join LocationStatusWiseStock ls on ls.Oid=LotNos
		inner join GardenInvoice gi on gi.Oid=ls.InvoiceNo
		inner join InvoiceHeader ih on ih.Oid=gi.Oid
		inner join Catalog c on cl.Catalog=c.Oid
		inner join InvoiceHeader ihh on ihh.Oid=c.Oid	
	)
end
go

解决方案

select * from(

select ls.LotNo,sm.InvoiceNo,i.ItemName,
        sm.PackingQuantityPcs,sm.GrossQuantityKgs,ih.BillDate,gi.ArrivalDate,
        cl.CatalogueLotNo,sm.ApproxRate,sm.Rate,dbo.GetCatalogueNo(ls.LotNo),'ss','ss' from StockMovement sm
        inner join CatalogLine cl on cl.Oid= sm.Oid
        inner join Item i on i.Oid = TeaGrade
        inner join LocationStatusWiseStock ls on ls.Oid=LotNos
        inner join GardenInvoice gi on gi.Oid=ls.InvoiceNo
        inner join InvoiceHeader ih on ih.Oid=gi.Oid
        inner join Catalog c on cl.Catalog=c.Oid
        inner join InvoiceHeader ihh on ihh.Oid=c.Oid
)x





try like this.. if its not work. plz let me know


alter procedure [dbo].[spCatalogPrinting]
AS
Begin
    Delete from tempCataloguePrinting

    Insert into tempCataloguePrinting
        select  ROW_NUMBER()OVER (ORDER BY i.ItemName) As  Row,ls.LotNo,sm.InvoiceNo,i.ItemName,
        sm.PackingQuantityPcs,sm.GrossQuantityKgs,ih.BillDate,gi.ArrivalDate,
        cl.CatalogueLotNo,sm.ApproxRate,sm.Rate,dbo.GetCatalogueNo(ls.LotNo),dbo.Valuation(ls.LotNo),''
        from StockMovement sm
        inner join CatalogLine cl on cl.Oid= sm.Oid
        inner join Item i on i.Oid = TeaGrade
        inner join LocationStatusWiseStock ls on ls.Oid=LotNos
        inner join GardenInvoice gi on gi.Oid=ls.InvoiceNo
        inner join InvoiceHeader ih on ih.Oid=gi.Oid
        inner join Catalog c on cl.Catalog=c.Oid
        inner join InvoiceHeader ihh on ihh.Oid=c.Oid
end
go


这篇关于错误:当EXISTS未引入子查询时,只能在选择列表中指定一个表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆