このクエリは必要なものを正確に返しますが、それからピボットテーブルを作成しようとしています。CASE句でSLAStatusとして定義されている列をSUMできるようにし(それが可能かどうかはわかりません)、OrderID列をカウントし、calculate(SLAStatus列の合計)/(OrderID列のカウント)を返します。 SLAを伴う注文の割合。どこでもオンラインで探していましたが、これを理解できないようです
SELECT oi.OrderID, o.Address1 as StreetAddress, c.Name as County, o.State, p.Abbreviation, oi.OrderDate as Dateentered,
DATEADD(dd, DATEDIFF(dd, 0, oi.DeliveredDate), 0) as DateCompleted, DATEADD(dd, DATEDIFF(dd, 0, oi.RequiredByDate), 0) as EstimatedDeliveryDate,
CASE
WHEN oi.DeliveredDate <= oi.RequiredByDate THEN '1'
ELSE '0'
END AS SLAStatus,
cl.Name as Client, clb.Name as Client2, v.ContactFirstName + ' ' + v.ContactLastName as Appraiser
FROM OrderItems oi
JOIN Orders o on o.OrderID = oi.OrderID
JOIN Counties c on c.FIPS = o.FIPS
JOIN Products p on p.ProductID = oi.ProductID
JOIN Clients cl on cl.ClientID = o.ClientID
JOIN ClientBranches clb on clb.ClientID = cl.ClientID
JOIN Vendors v on v.VendorID = oi.VendorID
JOIN Milestones m on m.MilestoneID = oi.LastMilestoneID
WHERE cl.Name not like '%TEST%'
and '2012-03-01' <=
(select MAX(MilestoneDate)
from OrderItemMilestones
where OrderID = oi.OrderID
and OrderItemID = oi.OrderItemID
and MilestoneID in (100,130,140,150))
and '2012-04-10' >=
(select MAX(MilestoneDate)
from OrderItemMilestones
where OrderID = oi.OrderID
and OrderItemID = oi.OrderItemID
and MilestoneID in (100,130,140,150))