【发布时间】:2016-03-07 12:31:59
【问题描述】:
SELECT DISTINCT SOM.CompanyID,
SOM.BranchID,
SOM.SOID,
SOM.TranDocNo,
SOM.DocDate,
CM.CustomerName,
STM.SaleTypeName,
SOM.NetAmount,
SOM.TotQty
FROM tblSODetails SOD WITH (NOLOCK)
INNER JOIN tblSOMaster SOM WITH (NOLOCK) ON (SOD.SOID = SOM.SOID)
INNER JOIN tblSaleTypeMaster STM WITH (NOLOCK) ON (SOM.SaleTypeID = STM.SaleTypeID)
INNER JOIN tblCustomerMaster CM WITH (NOLOCK) on (SOM.CustomerID = CM.CustomerID)
LEFT OUTER JOIN tblSOReturnDetails SORD WITH (NOLOCK) ON (SOD.SODetID = SORD.SODetID)
LEFT OUTER JOIN tblSOReturnMaster SORM WITH (NOLOCK) ON (SORD.SOReturnID = SORM.SOReturnID)
LEFT OUTER JOIN tblOutwardMaster OM WITH (NOLOCK) ON (SOM.TranDocNo = OM.RefTranDocNo)
LEFT OUTER JOIN tblOutwardDetails OD WITH (NOLOCK) ON (OM.OutwardID = OD.OutwardID AND OD.ItemID = SOD.ItemID)
WHERE SOM.CompanyID = 1
and SOM.BranchID = 1
and SOM.IsOutward = 0
and SOM.DocTypeID = 3
and SOM.IsSOReturn = 0
and SOM.IsDealer = 0
and STM.IsStockEffect = 1
and STM.IsSaleOrder = 1
and SOM.Status = 'AP'
and CM.IsBlackListed = 0
AND SOD.Qty > (ISNULL(OD.Qty,0) + ISNULL(SORD.Qty,0))
如何以 LINQ 查询的形式编写此 SQL 查询.. 并且特别是查询的最后一行。要写入 LINQ 查询
我写这个查询来解决我的问题。
(from SOD in db.tblSODetails
join SOM in db.tblSOMasters on SOD.SOID equals SOM.SOID
join STM in db.tblSaleTypeMasters on SOM.SaleTypeID equals STM.SaleTypeID
SOM.CustomerID 等于 CM.CustomerID join SORD in db.tblSOReturnDetails on SOD.SODetID 等于 SORD.SODetID into SORD_join
from SORD in SORD_join.DefaultIfEmpty()
from CM in db.tblCustomerMasters.Where(
CM => CM.CustomerID == SOM.CustomerID && (CM.IsBlackListed == false))
SOD.SODetID).DefaultIfEmpty()
join SORM in db.tblSOReturnMasters on SORD.SOReturnID equals SORM.SOReturnID into SORM_join
from SORM in SORM_join.DefaultIfEmpty()
join OM in db.tblOutwardMasters on new { TranDocNo = SOM.TranDocNo } equals
new { TranDocNo = OM.RefTranDocNo } into OM_join
from OM in OM_join.DefaultIfEmpty()
join OD in db.tblOutwardDetails on new { OM.OutwardID, SOD.ItemID } equals
new { OD.OutwardID, OD.ItemID } into OD_join
from OD in OD_join.DefaultIfEmpty()
where (SOM.CompanyID == compID)
&& (SOM.BranchID == BranchID)
&& ((isOutward == -1) || (SOM.IsOutward == (isOutward == 1 ? true : false)))
&& (SOM.DocTypeID == 3)
&& (SOM.Status == "AP")
&& (SOM.IsSOReturn == false)
&& (SOM.IsDealer == false)
&& (STM.IsStockEffect == true)
&& (STM.IsSaleOrder == true)
&& ((SOM.TranDocNo.Contains(strDocTypeCode)))
&& SOD.Qty > (((System.Decimal?)(OM.TotQty) ?? (System.Decimal?)0) + ((System.Decimal?)(SORM.TotQty) ?? (System.Decimal?)0))
select new
{
SOM.CompanyID,
SOM.BranchID,
SOM.SOID,
TranDocNo = SOM.TranDocNo,
DocDate = SOM.DocDate,
CustomerName = CM.CustomerName == null ? "" : CM.CustomerName,
DealerName = "",
STM.SaleTypeName,
NetAmount = SOM.NetAmount,
TotQty = SOM.TotQty
}
).Distinct();
【问题讨论】:
-
到目前为止你尝试了什么?
-
问题没有显示任何研究工作,请告诉我们您尝试了什么。
-
使用此代码获得解决方案...。 1. SOD.Qty > (((System.Decimal?)(OD.TotQty) ?? (System.Decimal?)0) + ((System.Decimal?)(SORD.TotQty) ?? (System.Decimal?) 0))
标签: sql-server linq