自分で結果セットを計算しようとしていますが、WHERE句が私に問題を引き起こしているという奇妙な問題に直面しています。次のようにWhere句がクエリからSQL Serverを削除する
表は次のとおりである: -
Customer
CustomerId CustomerName
2 Jayesh
5 Hasan
SaleInvoiceMaster
CustomerId TotalInvoiceAmount
1 50000
PurchaseInvoiceMaster
CustomerId TotalInvoiceAmount
1 10000
PaymentTransactions
CustomerId PaymentAmount
1 10000
次のように動作している結果セットがある: -
SELECT DISTINCT C.CustomerId AS CustomerId, C.Name AS CustomerName, ISNULL(SIM.TotalSale, 0), ISNULL(PIM.TotalPurchase, 0), ISNULL(PT.TotalPaid, 0), ISNULL(SIM.TotalSale - PIM.TotalPurchase - PT.TotalPaid, 0) AS AmountPending
FROM Customers AS C
LEFT OUTER JOIN (SELECT CustomerId, ISNULL(SUM(TotalInvoiceAmount),0) AS TotalSale FROM SaleInvoiceMaster GROUP BY CustomerId) AS SIM ON SIM.CustomerId = C.CustomerId
LEFT OUTER JOIN (SELECT CustomerId, ISNULL(SUM(TotalInvoiceAmount),0) AS TotalPurchase FROM PurchaseInvoiceMaster GROUP BY CustomerId) AS PIM ON PIM.CustomerId = C.CustomerId
LEFT OUTER JOIN (SELECT CustomerId, PaymentStatus, ISNULL(SUM(PaymentAmount),0) AS TotalPaid FROM PaymentTransactions AS P GROUP BY CustomerId, PaymentStatus) AS PT ON PT.CustomerId = C.CustomerId
下図に示すように同じに対する結果が
あります最後のfに3番目の句を追加すると左外部結合、問題が発生します。計算が停止し、ゼロが表示されます。次のように私の更新クエリは次のとおりです。 -
SELECT DISTINCT C.CustomerId AS CustomerId, C.Name AS CustomerName, ISNULL(SIM.TotalSale, 0), ISNULL(PIM.TotalPurchase, 0), ISNULL(PT.TotalPaid, 0), ISNULL(SIM.TotalSale - PIM.TotalPurchase - PT.TotalPaid, 0) AS AmountPending
FROM Customers AS C
LEFT OUTER JOIN (SELECT CustomerId, ISNULL(SUM(TotalInvoiceAmount),0) AS TotalSale FROM SaleInvoiceMaster GROUP BY CustomerId) AS SIM ON SIM.CustomerId = C.CustomerId
LEFT OUTER JOIN (SELECT CustomerId, ISNULL(SUM(TotalInvoiceAmount),0) AS TotalPurchase FROM PurchaseInvoiceMaster GROUP BY CustomerId) AS PIM ON PIM.CustomerId = C.CustomerId
LEFT OUTER JOIN (SELECT CustomerId, ISNULL(SUM(PaymentAmount),0) AS TotalPaid FROM PaymentTransactions AS PT1 WHERE (PT1.PaymentStatus = 'Payment Made' OR PT1.PaymentStatus = 'Bad Debt') GROUP BY CustomerId) AS PT ON PT.CustomerId = C.CustomerId
結果セットは次のようになります - あなたはこれをやっている、あなたのメインを選択し、体内の
この列はどこですか?[PaymentStatus]?私はあなたのフィルタでそれを見ることができますが、他にどこですか? – Shnugo