Я получаю сообщение об ошибке при выполнении моего запросаSubquery агрегатной функция с SUM (CASE подзапросом)
Невозможно выполнить агрегатную функцию выражения, содержащее агрегата или подзапрос.
Код:
SELECT
S.id,
SUM(CASE WHEN sc.coverage IN (SELECT number FROM ArrayOfIntegersFromString(@dynamicData)) THEN 1 ELSE 0 END) as sm
FROM
Storefronts s
LEFT JOIN StorefrontCoverages sc ON s.id = sc.storefront
LEFT JOIN Vendors v ON s.vendor = v.Id
WHERE
(
v.active = 1
AND
s.approved = 1
AND
s.status = 1
)
GROUP BY S.id
HAVING SUM(CASE WHEN sc.coverage IN (SELECT number FROM ArrayOfIntegersFromString(@dynamicData)) THEN 1 ELSE 0 END) > 0
ORDER BY sm desc
SUM
в SELECT
не так важно, как тот, в HAVING
, так что если кто-то может помочь мне даже без этого SUM(...)
в SELECT
было бы полезно.
Поскольку T-SQL не имеет массивы, это действительно плохо имени функции у вас там. –