HttpContext. Ошибка по сравнению с HttpContext. Сервер. GetLastError ()

Хорошее место для начала - использовать оконную функцию. Одна проблема заключается в том, что вы хотите усреднить значения, полученные из разных столбцов, и у которых может быть разное количество случаев.

Я думаю, что вам нужно разбить вычисление, чтобы вычислить среднее: сложите значения и разделите их на сумму вхождений.

Рассмотрим:

SELECT *
FROM (
    SELECT 
        s.*,
        (
            0.0 + 
            COALESCE(SUM(CASE WHEN goal_met = 'Y' THEN sales_index END) OVER(
                PARTITION BY product_id 
                ORDER BY sales_period 
                ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
            ), 0)
            + COALESCE(SUM(CASE WHEN goal_met = 'N' THEN sales_index END) OVER(
                PARTITION BY product_sub 
                ORDER BY sales_period 
                ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
            ), 0)
        ) / (
            COALESCE(SUM(goal_met = 'Y') OVER(
                PARTITION BY product_id 
                ORDER BY sales_period 
                ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
            ), 0)
            + COALESCE(SUM(goal_met = 'N') OVER(
                PARTITION BY product_sub 
                ORDER BY sales_period 
                ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
            ), 0)
        ) AS sales_index_goal
    FROM sales_performance s
) x WHERE product_ID = 'C12'

В эта скрипка БД с вашими данными выборки возвращает:

| product_ID | sales_period | sales_qty | sales_index | product_sub | goal_met | sales_index_goal   |
| ---------- | ------------ | --------- | ----------- | ----------- | -------- | ------------------ |
| C12        | 1            | 15        | 20          | D71         | Y        |                    |
| C12        | 2            | 15        | 30          | C05         | Y        | 20                 |
| C12        | 3            | 5         | 4           | F20         | N        | 21.666666666666668 |

11
задан Craig Quillen 11 April 2009 в 17:30
поделиться

1 ответ

Они одинаковые:

HttpContext.Error возвращает первую ошибку.

HttpContext.Server возвращает экземпляр класса HttpServerUtility , который предоставляет вспомогательные оболочки для HttpContext , включая

HttpContext.Server.GetLastError] [ , который возвращает HttpContext.Error (проверено с помощью Reflector).

18
ответ дан 3 December 2019 в 06:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: