SQL Запрос для вычисления AVG DATEDIFF - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь написать запрос, который дает мне, дает мне AVG из Datediff

У меня есть похожий запрос, который я пытаюсь повторить с моим новым, и вот он :

SELECT DATENAME(MONTH, d.OPENED) AS MonthValue, 
SUM(CASE WHEN d.ASSGNTO = 'E099255' AND d.REV_CLS = 2 THEN 
1 ELSE 0 END) AS SmallCommercialIndust, 
SUM(CASE WHEN d.ASSGNTO = 'E099255' AND d.REV_CLS <> 2 THEN 1 
ELSE 0 END) AS Residential
FROM hb_Disputes d
WHERE YEAR(d.OPENED) = YEAR(GETDATE())
GROUP BY DATENAME(MONTH, d.OPENED) 
ORDER BY MIN(d.OPENED);

Вот мой вывод:

Month Value  Small Commercial Indust     Residential
----------------------------------------------------
January             0                         0
February            0                         0
March               1                         0
April               0                         2
May                 0                         1
June                0                         1
July                1                         0
August              1                         0
September           0                         1
October             1                         0
November            1                         0
December            0                         1

Ниже приведен Query Я пытаюсь создать, который принимает ту же информацию, но добавляет дополнительный компонент, где он принимает d.OPENS и вычтите его до d.DATERLVD и предоставьте мне AVG за месяц:

SELECT DATENAME(MONTH, d.OPENED) AS MonthValue, 
SUM(CASE WHEN d.ASSGNTO = 'E099255' AND d.REV_CLS = 2 THEN 1 
ELSE 0 END AND AVG(DATEDIFF(day, d.OPENED, d.DATERLVD)) AS 
SmallCommercialIndust, 
SUM(CASE WHEN d.ASSGNTO = 'E099255' AND d.REV_CLS <> 2  THEN 1 
ELSE 0 END AND AVG(DATEDIFF(day, d.OPENED, d.DATERLVD)) AS 
Residential
FROM hb_Disputes d
WHERE YEAR(d.OPENED) = YEAR(GETDATE())
GROUP BY DATENAME(MONTH, d.OPENED)
ORDER BY MIN(d.OPENED);

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Почему вы используете AND в предложении SELECT? Я думаю, что вы хотите:

SELECT DATENAME(MONTH, d.OPENED) AS MonthValue, 
       SUM(CASE WHEN d.ASSGNTO = 'E099255' AND d.REV_CLS = 2 THEN 1 ELSE 0 END) as SmallCommercialIndust,
       AVG(CASE WHEN d.ASSGNTO = 'E099255' AND d.REV_CLS = 2 THEN DATEDIFF(day, d.OPENED, d.DATERLVD) END) AS SmallCommercialIndust_avg, 
       SUM(CASE WHEN d.ASSGNTO = 'E099255' AND d.REV_CLS <> 2 THEN 1 ELSE 0 END) as Residential,
       AVG(CASE WHEN d.ASSGNTO = 'E099255' AND d.REV_CLS <> 2 THEN DATEDIFF(day, d.OPENED, d.DATERLVD) END) AS Residential_avg
FROM hb_Disputes d
0 голосов
/ 27 апреля 2020

Узнайте, как правильно отформатировать код. Вы можете ясно видеть, что вы поставили скобки не в том месте.

SELECT DATENAME(MONTH, d.OPENED) AS MonthValue
    , SUM(
        CASE 
            WHEN d.ASSGNTO = 'E099255' AND d.REV_CLS = 2 THEN 1 
            ELSE 0 
        END 
        AND 
            AVG(DATEDIFF(day, d.OPENED, d.DATERLVD)
    ) AS SmallCommercialIndust
    , SUM(
        CASE 
            WHEN d.ASSGNTO = 'E099255' AND d.REV_CLS <> 2  THEN 1 
            ELSE 0 
        END
        AND AVG(DATEDIFF(day, d.OPENED, d.DATERLVD)
    ) AS Residential
FROM hb_Disputes d
WHERE YEAR(d.OPENED) = YEAR(GETDATE())
GROUP BY DATENAME(MONTH, d.OPENED)
ORDER BY MIN(d.OPENED);
...