使用子查询聚合函数

时间:2015-12-17 15:32:58

标签: sql-server myeclipse

如果有人可以指导我回答这个问题的问题,请放心,我会关闭这个问题,但似乎我找到的大多数答案都与我的问题无关。

无论如何,我的问题是我想将一个子查询放入聚合查询中。我在下面嘲笑了一些伪代码,以帮助说明我希望能够做些什么。困扰我的是,如果我执行查询并硬编码信息,它可以正常工作,但不适用于查询。

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中使用查询吗?如果没有,我的其他选择是什么?如果可能的话,我宁愿将其保留在单个查询中。还值得注意的是,在我的实际查询中,我有多个总和,每个都有不同的子查询。

1 个答案:

答案 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