0

我试图将两列的结果添加到下面我的查询中的“准时”列中,并根据总列进行计算。结果我想要的是这些列:

评估员 'OntimeSum' 'PastDueSum' 'Ontime + Pastdue' '%ontime'

我已经在下面的查询中有前三个,但我不知道如何做其他的,似乎无法弄清楚它们或在任何地方找到示例。

WITH AppraiserTurnTime AS
(SELECT (v.ContactLastName+ ', ' +v.ContactFirstName) AS Appraiser

   ,SUM(CASE WHEN oi.SubmittedDate <= oi.AssignedDate THEN 1 ELSE 0 END) AS OnTime
   ,SUM(CASE WHEN oi.SubmittedDate >= oi.AssignedDate THEN 1 ELSE 0 END) AS PastDue


FROM OrderItems oi
JOIN Vendors v ON v.VendorID = oi.VendorID
JOIN VendorClasses vc ON vc.VendorClassID = v.VendorClassID

WHERE vc.VendorClassID in (6, 3)
GROUP BY ContactFirstName,v.ContactLastName)

SELECT * FROM AppraiserTurnTime
4

1 回答 1

0

你已经明白了。

(2)   ,SUM(CASE WHEN oi.SubmittedDate <= oi.AssignedDate THEN 1 ELSE 0 END) AS OnTime
(3)   ,SUM(CASE WHEN oi.SubmittedDate >= oi.AssignedDate THEN 1 ELSE 0 END) AS PastDue

总计为 (2)+(3),按时百分比为 (2)/((2)+(3))

您可以为每个指标插入上述 (2) 和 (3) 的查询,或者如果需要,创建一个嵌套查询,以便您可以引用列,即

SELECT ..., OnTime+PastDue, etc.
FROM ( your original query)

此外,当前查询将多计,因为您同时使用 >= 和 <=。最好确定在确切时间发生的事情是否过期。

于 2012-04-22T06:36:00.450 回答