此查询中的错误“消息258,级别15,状态1,行38无法在int上调用方法". PLZ帮助 [英] error in this query "Msg 258, Level 15, State 1, Line 38 Cannot call methods on int." PLZ help

查看:91
本文介绍了此查询中的错误“消息258,级别15,状态1,行38无法在int上调用方法". PLZ帮助的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

select * from SAl_OrderHeader soh
where (
select  OrderID from (
select
SAL_OrderDetail.Quantity as SalesOrderQuantity
, isnull((
select SUM(Quantity) from SAL_deliveryOrderDetail
where SAL_deliveryOrderDetail.SalesOrderHeaderID = SAL_OrderHeader.OrderID
and SAL_deliveryOrderDetail.SalesOrderDetailID = SAL_OrderDetail.OrderDetailID
and SAL_deliveryOrderDetail.CompanyID = SAL_OrderHeader.CompanyID
and SAL_deliveryOrderDetail.PeriodID = SAL_OrderHeader.PeriodID
and SAL_deliveryOrderDetail.Status = 1

),0 ) as DeliveryOrderQuantity
,isnull  (SAL_OrderDetail.ReversedQuantity , 0 )as Rev_Qty
,SET_DocumentType.DocumentType
, SAL_OrderHeader.ContractNo
,SAL_OrderHeader.ContractDate
,SAL_OrderHeader.OrderID
from SAL_OrderHeader

inner join SAL_OrderDetail on  SAL_OrderDetail.OrderID = SAL_OrderHeader.OrderID
and SAL_OrderDetail.CompanyID = SAL_OrderHeader.CompanyID
and SAL_OrderDetail.PeriodID = SAL_OrderHeader.PeriodID
and SAL_OrderDetail.status = 1
and SAL_OrderHeader.Status = 1

inner join SET_DocumentType on SET_DocumentType.DocumentTypeID =  SAL_OrderHeader.SaleContractTypeID
and SET_DocumentType.CompanyID =  SAL_OrderHeader.CompanyID
and SET_DocumentType.PeriodID =  SAL_OrderHeader.PeriodID
and SET_DocumentType.Status =  1
) as tab

where (tab.SalesOrderQuantity - DeliveryOrderQuantity) - tab.Rev_Qty > 0


).[OrderID] = soh.OrderID

推荐答案

问题已解决...我正在用where子句代替join ...

选择
soh.OrderID
,soh.ContractNo
,soh.ContractDate
,SET_DocumentType.DocumentType
来自SAl_OrderHeader soh
内部联接(
从(
中选择* 选择
SAL_OrderDetail.Quantity作为SalesOrderQuantity
,isull((
从SAL_deliveryOrderDetail中选择SUM(Quantity)
其中SAL_deliveryOrderDetail.SalesOrderHeaderID = SAL_OrderHeader.OrderID
和SAL_deliveryOrderDetail.SalesOrderDetailID = SAL_OrderDetail.OrderDetailID
和SAL_deliveryOrderDetail.CompanyID = SAL_OrderHeader.CompanyID
和SAL_deliveryOrderDetail.PeriodID = SAL_OrderHeader.PeriodID
和SAL_deliveryOrderDetail.Status = 1

),0)作为DeliveryOrderQuantity
,isnull(SAL_OrderDetail.ReversedQuantity,0)作为Rev_Qty
,SET_DocumentType.DocumentType
,SAL_OrderHeader.ContractNo
,SAL_OrderHeader.ContractDate
,SAL_OrderHeader.OrderID
,SAL_OrderHeader.CompanyID
,SAL_OrderHeader.PeriodID
来自SAL_OrderHeader

SAL_OrderDetail.OrderID = SAL_OrderHeader.OrderID上的内部联接SAL_OrderDetail
和SAL_OrderDetail.CompanyID = SAL_OrderHeader.CompanyID
和SAL_OrderDetail.PeriodID = SAL_OrderHeader.PeriodID
和SAL_OrderDetail.status = 1
和SAL_OrderHeader.Status = 1

SET_DocumentType.DocumentTypeID上的内部联接SET_DocumentType = SAL_OrderHeader.SaleContractTypeID
和SET_DocumentType.CompanyID = SAL_OrderHeader.CompanyID
和SET_DocumentType.PeriodID = SAL_OrderHeader.PeriodID
和SET_DocumentType.Status = 1
)作为选项卡

其中(tab.SalesOrderQuantity-DeliveryOrderQuantity)-tab.Rev_Qty> 0


)tab2上的tab2.OrderID = soh.OrderID
和tab2.CompanyID = soh.CompanyID
和tab2.PeriodID = soh.PeriodID
和soh.Status = 1

Set_DocumentType.DocumentTypeID上的内部联接SET_DocumentType = soh.SaleContractTypeID
和Set_DocumentType.CompanyID = soh.CompanyID
和Set_DocumentType.PeriodID = soh.PeriodID
和Set_DocumentType.Status = 1

和Soh.CompanyID = 1
和Soh.PeriodID = 1

按cast(Soh.ContractNo as int)排序asc
Problem Solved ... i was putting where clause in place of join ...

select
soh.OrderID
,soh.ContractNo
,soh.ContractDate
,SET_DocumentType.DocumentType
from SAl_OrderHeader soh
inner join (
select * from (
select
SAL_OrderDetail.Quantity as SalesOrderQuantity
, isnull((
select SUM(Quantity) from SAL_deliveryOrderDetail
where SAL_deliveryOrderDetail.SalesOrderHeaderID = SAL_OrderHeader.OrderID
and SAL_deliveryOrderDetail.SalesOrderDetailID = SAL_OrderDetail.OrderDetailID
and SAL_deliveryOrderDetail.CompanyID = SAL_OrderHeader.CompanyID
and SAL_deliveryOrderDetail.PeriodID = SAL_OrderHeader.PeriodID
and SAL_deliveryOrderDetail.Status = 1

),0 ) as DeliveryOrderQuantity
,isnull (SAL_OrderDetail.ReversedQuantity , 0 )as Rev_Qty
,SET_DocumentType.DocumentType
, SAL_OrderHeader.ContractNo
,SAL_OrderHeader.ContractDate
,SAL_OrderHeader.OrderID
,SAL_OrderHeader.CompanyID
,SAL_OrderHeader.PeriodID
from SAL_OrderHeader

inner join SAL_OrderDetail on SAL_OrderDetail.OrderID = SAL_OrderHeader.OrderID
and SAL_OrderDetail.CompanyID = SAL_OrderHeader.CompanyID
and SAL_OrderDetail.PeriodID = SAL_OrderHeader.PeriodID
and SAL_OrderDetail.status = 1
and SAL_OrderHeader.Status = 1

inner join SET_DocumentType on SET_DocumentType.DocumentTypeID = SAL_OrderHeader.SaleContractTypeID
and SET_DocumentType.CompanyID = SAL_OrderHeader.CompanyID
and SET_DocumentType.PeriodID = SAL_OrderHeader.PeriodID
and SET_DocumentType.Status = 1
) as tab

where (tab.SalesOrderQuantity - DeliveryOrderQuantity) - tab.Rev_Qty > 0


) tab2 on tab2.OrderID = soh.OrderID
and tab2.CompanyID = soh.CompanyID
and tab2.PeriodID = soh.PeriodID
and soh.Status = 1

inner join SET_DocumentType on Set_DocumentType.DocumentTypeID = soh.SaleContractTypeID
and Set_DocumentType.CompanyID = soh.CompanyID
and Set_DocumentType.PeriodID = soh.PeriodID
and Set_DocumentType.Status = 1

and Soh.CompanyID =1
and Soh.PeriodID =1

order by cast( Soh.ContractNo as int ) asc


这篇关于此查询中的错误“消息258,级别15,状态1,行38无法在int上调用方法". PLZ帮助的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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