У меня проблема с возвратом значений в процентах контрольного списка столбцов.Он выдает ошибку «Подзапрос возвратил более 1 значения. Это недопустимо, если подзапрос следует =,! =,» Предоставленные таблицы являются просто выборкой из тысяч строк, которые имеют много вычислений.
Таблиц 2, и я извлек этот образец из тысяч строк:
╔═════════╦═══════════════╗
║ id ║ value_integer ║
╠═════════╬═══════════════╣
║ 2059064 ║ NULL ║
╠═════════╬═══════════════╣
║ 2064435 ║ NULL ║
╠═════════╬═══════════════╣
║ 2064889 ║ NULL ║
╠═════════╬═══════════════╣
║ 2064893 ║ NULL ║
╠═════════╬═══════════════╣
║ 2086272 ║ NULL ║
╠═════════╬═══════════════╣
║ 2128447 ║ NULL ║
╠═════════╬═══════════════╣
║ 2128447 ║ NULL ║
╠═════════╬═══════════════╣
║ 2128447 ║ NULL ║
╠═════════╬═══════════════╣
║ 2134036 ║ NULL ║
╠═════════╬═══════════════╣
║ 2163046 ║ NULL ║
╠═════════╬═══════════════╣
║ 2175279 ║ NULL ║
╠═════════╬═══════════════╣
║ 2175279 ║ NULL ║
╠═════════╬═══════════════╣
║ 2186928 ║ NULL ║
╠═════════╬═══════════════╣
Вторая таблица:
╔═════════╦════════════╗
║ id ║ evaluation ║
╠═════════╬════════════╣
║ 2059064 ║ 0 ║
╠═════════╬════════════╣
║ 2064435 ║ 0 ║
╠═════════╬════════════╣
║ 2064889 ║ 0 ║
╠═════════╬════════════╣
║ 2064893 ║ 0 ║
╠═════════╬════════════╣
║ 2086272 ║ 50001 ║
╠═════════╬════════════╣
║ 2128447 ║ 0 ║
╠═════════╬════════════╣
║ 2128447 ║ 0 ║
╠═════════╬════════════╣
║ 2128447 ║ 50001 ║
╠═════════╬════════════╣
║ 2134036 ║ 50001 ║
╠═════════╬════════════╣
║ 2163046 ║ 50001 ║
╠═════════╬════════════╣
║ 2175279 ║ 50006 ║
╠═════════╬════════════╣
║ 2175279 ║ 50001 ║
╠═════════╬════════════╣
║ 2186928 ║ 50004 ║
╠═════════╬════════════╣
║ 2190848 ║ 50001 ║
╠═════════╬════════════╣
║ 2190848 ║ 0 ║
╠═════════╬════════════╣
║ 2190848 ║ 0 ║
╠═════════╬════════════╣
║ 2190848 ║ 1 ║
╠═════════╬════════════╣
║ 2190848 ║ 1 ║
╠═════════╬════════════╣
║ 2222107 ║ 1 ║
╠═════════╬════════════╣
║ 2250093 ║ 1 ║
╠═════════╬════════════╣
║ 2250093 ║ 1 ║
╠═════════╬════════════╣
║ 2250093 ║ 50005 ║
╠═════════╬════════════╣
║ 2250093 ║ 0 ║
╠═════════╬════════════╣
╚═════════╩════════════╝
Цель состоит в том, чтобы вычислить процентоценка выбрана / общая оценка.Оценка 50001 - «да», а 0 и 1 - «не оценены» или «не выбраны».
UPDATE DB.D_ENERGY_REFERENCE
SET D_ENERGY_REFERENCE.VALUE_INTEGER = (SELECT (SELECT CAST(COUNT(EVALUATION) AS FLOAT)
FROM DB.D_CHECK_LIST D_CHECK_LIST
WHERE D_CHECK_LIST.EVALUATION = 50001
GROUP BY ID) / (SELECT CAST(COUNT(EVALUATION) AS FLOAT)
FROM DB.D_CHECK_LIST D_CHECK_LIST
WHERE D_CHECK_LIST.EVALUATION NOT IN (0,1)
GROUP BY ID) * 100
FROM DB.D_CHECK_LIST D_CHECK_LIST
WHERE D_CHECK_LIST.ID IN (SELECT ID
FROM DB.D_ENERGY_REFERENCE
WHERE ID = D_CHECK_LIST.ID))