Sql 通过将sum(case)语句中的两列相除来获取百分比
我正在尝试添加两列的结果,并在下面的查询中,根据总计列对准时列进行计算。因此,我想要的是以下列: 评估人“OntimeSum”“PastDueSum”“Ontime+pastdue”“%Ontime” 我已经在下面的查询中找到了前三个,但是我不知道如何做其他的,而且似乎无法找出它们,或者在任何地方都找不到示例Sql 通过将sum(case)语句中的两列相除来获取百分比,sql,tsql,case,aggregate,Sql,Tsql,Case,Aggregate,我正在尝试添加两列的结果,并在下面的查询中,根据总计列对准时列进行计算。因此,我想要的是以下列: 评估人“OntimeSum”“PastDueSum”“Ontime+pastdue”“%Ontime” 我已经在下面的查询中找到了前三个,但是我不知道如何做其他的,而且似乎无法找出它们,或者在任何地方都找不到示例 WITH AppraiserTurnTime AS (SELECT (v.ContactLastName+ ', ' +v.ContactFirstName) AS Appraiser
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
你差不多明白了
(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
另外,当前查询将计算过多,因为您同时使用>=和感谢我得到了总数,但另一方面遇到了除以0的问题。试图使用此方法解决此问题,但当oi.SubmittedDate
SELECT ..., OnTime+PastDue, etc.
FROM ( your original query)