У меня есть таблица, которая содержит различные значения метрики производительности.У меня есть запрос (subQryKPI), построенный на лету, который отображает эти показатели по горизонтали, например, так:
| EmployeeID | Sales | Calls | Hours |
--------------------------------------
| 22567 | 4 | 10 | 5 |
| 98321 | 8 | 12 | 6 |
| 24680 | 0 | 0 | 3 |
У меня есть другая таблица, которая содержит формулы для различных KPI:
| KPI | Formula |
--------------------------------------
| Sales per Call | [Sales] / [Calls] |
| Calls per Hour | [Calls] / [Hours] |
Наконец, у меня есть некоторый код VBA, который создает запрос SQL для вычисления показателей KPI для каждого человека и вставки их в таблицу (tblKPIdata).
До сих пор запрос строился для расчета 1 KPI за один раз:
INSERT INTO
tblKPIdata
SELECT
EmployeeID,
"Sales per Call" as KPIname,
[Sales]/[Calls] AS KpiScore
FROM
SubQryKPI
Это работает нормально и даже работает, если запрос Select включает ошибки Div / 0 (например, EmployeeID 24680выше);Похоже, он просто отфильтровывает ошибки, что вполне устраивает мои потребности.
Проблема, с которой я столкнулся, заключается в том, что я пытаюсь обновить код для расчета нескольких KPI одновременно.Я попытался сделать это с помощью запроса Union следующим образом:
INSERT INTO
tblKPIdata
SELECT * FROM (
SELECT
EmployeeID,
"Sales per Call" as KPIname,
[Sales]/[Calls] AS KpiScore
FROM
SubQryKPI
UNION ALL
SELECT
EmployeeID,
"Calls per Hour" as KPIname,
[Calls]/[Hours] AS KpiScore
FROM
SubQryKPI)
Но похоже, что если в запросе Union есть ошибка Div / 0, его нельзя вставить в другую таблицу.(Я не могу использовать старый трюк IIf(divisor = 0,0...
, так как никогда не знаю, каким будет делитель.
Кто-нибудь знает, почему ошибки нельзя игнорировать таким же образом, когда они являются частью Союза?запрос и есть ли способ обойти это?