我有一个会计情况,我们在同一会计情况下支付(政策交易类型NBS)和负面(政策交易类型取消或XLN)。我需要的行只有同一个客户的Tran Type'NBS'和'XLN'。SQL查询:如果存在值,我需要两行
实施例的数据:
Client PolicyNo Revenue TranType
-------------------------------------------
John Doe Pol1234 1000.00 NBS
John Doe Pol1234 -1000.00 XLN
Jane Loe Pol5675 9000.00 NBS
Jane Loe Pol5676 8000.00 NBS
Bill Foe Pol0985 1000.00 NBS
Bill Foe Pol0987 -1000.00 XLN
的查询需要的前两行只返回作为客户端和PolicyNo匹配也因为每一个都是NBS和XLN。如果同一客户的两条线路都是NBS,或者它们都是XLN,则需要将其排除。如果PolicyNo不匹配,则需要排除。
现在,我的查询返回全套。 (我省略了一些列从我上面的例子为简单起见
SELECT
Company_1.Name,
isnull(Customer.FirmNameCust,
isnull(Customer.FirstName + ' ', '') + isnull(Customer.LastName, '')) AS Client,
BasicPolInfo.PolNo,
DirectBillEntryHeader.StmtDate,
irectBillEntryHeader.Description,
DirectBillEntryDetail.*
FROM DirectBillEntryHeader
INNER JOIN
DirectBillEntryDetail
ON DirectBillEntryHeader.DBEHId = DirectBillEntryDetail.DBEHId
INNER JOIN BasicPolInfo
ON DirectBillEntryDetail.PolId = BasicPolInfo.PolId
INNER JOIN Customer
ON DirectBillEntryDetail.CustId = Customer.CustId
AND BasicPolInfo.CustId = Customer.CustId
INNER JOIN Company
ON DirectBillEntryDetail.WritingCoCode = Company.CoCode
INNER JOIN Employee
ON Customer.Prod1Code = Employee.EmpCode
INNER JOIN Company Company_1
ON Company.ParentCoCode = Company_1.CoCode
WHERE (DirectBillEntryDetail.TranType = 'NBS')
AND (DirectBillEntryHeader.StmtDate >= DateAdd(DD, - 30, GETDATE()))
OR (DirectBillEntryDetail.TranType = 'XLN')
AND (DirectBillEntryHeader.StmtDate >= DateAdd(DD, - 30, GETDATE()))
您展现漂亮的简单的样本数据。然后你显示,有七个表的查询。可以简化问题,把重点放在你需要? – 2014-09-24 14:57:33