如果有人可以指导我回答这个问题的问题,请放心,我会关闭这个问题,但似乎我找到的大多数答案都与我的问题无关。
无论如何,我的问题是我想将一个子查询放入聚合查询中。我在下面嘲笑了一些伪代码,以帮助说明我希望能够做些什么。困扰我的是,如果我执行查询并硬编码信息,它可以正常工作,但不适用于查询。
SELECT
COUNT(*),
SUM(CASE WHEN subtype IN (SELECT subtype FROM subtype_table WHERE random_limiter='X') THEN mainTable.quantity ELSE 0)
FROM mainTable
GROUP BY mainTable.groupingColumn
上面的代码会给我以下错误:
无法对包含的表达式执行聚合函数 聚合或子查询。
但是,如果我用一些文本替换查询(比如说...子类型IN(1,2,3,4,5)),它可以正常工作。
有什么办法可以在我的SUM中使用查询吗?如果没有,我的其他选择是什么?如果可能的话,我宁愿将其保留在单个查询中。还值得注意的是,在我的实际查询中,我有多个总和,每个都有不同的子查询。
答案 0 :(得分:1)
SELECT
COUNT(*),
COUNT(s.subtype)
FROM mainTable m
LEFT JOIN subtype_table s ON m.subtype = s.subtype AND s.random_limiter = 'X'
GROUP BY m.groupingColumn
查询#2
SELECT
COUNT(*),
COUNT(s.subtype)
FROM mainTable m
LEFT JOIN (
SELECT DISTINCT subtype
FROM subtype_table
WHERE random_limiter = 'X'
) s ON m.subtype = s.subtype
GROUP BY m.groupingColumn