何があっても行を表示しようとしているクエリがあります。クエリは、返されるデータがある場合に必要な情報の正しい情報を返しますが、すべての行がnullの場合、明らかに何も得られません。そうでない場合は、何もない代わりに、すべて0を返す行が必要です。
私はこれを使って説明しようisnull()
とcoalesce()
しましたが、どうやら正しくやっていないようです。以下は、この目的のために調整する必要がある私の基本クエリです。
SELECT
Vendor
,SUM(TotalAssigned) as 'Total Production Assigned Not Completed'
,SUM(AssignedFees) as 'Work in process Fees'
,SUM(TotalSubmitted) as 'Total Production Submitted'
,SUM(SubmittedFees) as 'Submitted Production Fees'
FROM(
SELECT
distinct
v.ContactFirstName+' '+v.ContactLastName AS Vendor
,oi.orderid, oi.orderitemid
,CASE WHEN oi.QueueID > 0 and oi.lastmilestoneid < 70 THEN 1 ELSE 0 END AS TotalAssigned
,CASE WHEN oi.QueueID > 0 and oi.lastmilestoneid < 70 THEN dbo.GetAdjustedVendorFee(oi.OrderID, oi.OrderItemID) END AS AssignedFees
,CASE WHEN oim.MilestoneID = 70 THEN 1 ELSE 0 END AS TotalSubmitted
,CASE WHEN oim.MilestoneID = 70 THEN dbo.GetAdjustedVendorFee(oi.OrderID, oi.OrderItemID) END AS SubmittedFees
FROM
OrderItems oi
LEFT JOIN OrderItemMilestones oim ON oim.OrderID = oi.OrderID and oim.OrderItemID = oi.OrderItemID
LEFT JOIN Vendors v ON v.VendorID = oi.VendorID
WHERE
oim.MilestoneDate BETWEEN dbo.TruncateDate(dateadd(dd, -1, Current_Timestamp)) and dbo.TruncateDate(Current_Timestamp)
and oi.VendorID in (105144)
and oi.productid not in (105)
)x
GROUP BY Vendor