尝试删除 ELSE :
ELSE
COUNT(DISTINCT CASE WHEN SopOrder_0.SooParentOrderReference LIKE 'INT%' THEN SopOrder_0.SooParentOrderReference END) AS num_int
您没有指定错误,但问题可能是 THEN 正在返回一个字符串和 ELSE 一个数字 - 所以试图将字符串值转换为数字。
THEN
另外,学会使用正确的,明确的, 的 标准 强> JOIN 句法。简单的规则: 决不 在中使用逗号 FROM 条款。
JOIN
FROM
我无法解释你得到的错误。您错误地使用单引号作为别名,但我实际上并不认为这会导致错误。
无论如何,我建议您先按订单汇总订单商品,然后才加入:
SELECT c.coacompanyname , so.sooorderdate , COUNT(*) AS orders , SUM(soi.itemcount) AS order_items , SUM(soi.ordervalue) AS order_value , COUNT(CASE WHEN so.sooparentorderreference LIKE 'INT%' THEN 1 END) AS int , COUNT(CASE WHEN so.sooparentorderreference LIKE 'WEB%' THEN 1 END) AS web FROM sbs.pub.company c JOIN sbs.pub.soporder so ON so.companyid = c.companyid JOIN ( SELECT soporderid, COUNT(*) AS itemcount, SUM(soivalue) AS ordervalue FROM sbs.pub.soporderitem GROUP BY soporderid ) soi ON soi.soporderid = so.soporderid GROUP BY c.coacompanyname, so.sooorderdate ORDER BY c.coacompanyname, so.sooorderdate;