я разработал следующий SQL запрос, чтобы получить процентМожно ли упростить этот SQL-запрос?
100 - ((reportedDate – Submission Date)/TotalNumOfVisits) * 100
Есть ли способ, чтобы упростить его? Как объединить два запроса в один?
SELECT
q1.VisitMonth,q1.TotalVisit, ISNULL(q2.diff,0) AS DIFF
,100 - ISNULL((CAST((q2.diff * 1.0/q1.TotalVisit) * 100 AS FLOAT)),0) PERC
FROM
(
SELECT DATENAME(MONTH,v.VisitDate) as VisitMonth, count(v.VisitID) as TotalVisit
FROM Visits v
INNER JOIN Assignments a ON a.AssignmentID = v.AssignmentID
WHERE a.ClientID IN (33,46)
AND v.VisitDate BETWEEN '01/01/2013' AND '31/12/2013'
group by DATENAME(MONTH,v.VisitDate)
) q1
LEFT OUTER JOIN
(
SELECT DATENAME(MONTH,v.VisitDate) as MonthName,COUNT(*) as diff
FROM Visits v
INNER JOIN Assignments a ON a.AssignmentID = v.AssignmentID
WHERE a.ClientID IN (33,46)
AND v.VisitDate BETWEEN '01/01/2013' AND '31/12/2013'
AND DATEDIFF(DAY,v.ReportDate,v.SubmissionDate) > 2
group by DATENAME(MONTH,v.VisitDate)
) q2
ON q1.VisitMonth = q2.MonthName
Результат:
Было правило для программ C, которые я предполагаю, работают для SQL, тоже: * Любая программа C может быть сведенной до одной строки, которая содержит хотя бы одну ошибку *. \ * scnr \ * –