Sql server 具有子查询的聚合函数
如果有人能给我一个回答这个问题的问题,请放心,我会结束这个问题,但我发现的大多数答案似乎都很简单,与我的问题无关 无论如何,我的问题是我想把一个子查询放到一个聚合查询中。我在下面模拟了一些伪代码,以帮助说明我希望能够做什么。困扰我的是,如果我执行查询并硬编码信息,它工作正常,但与查询不兼容Sql server 具有子查询的聚合函数,sql-server,myeclipse,Sql Server,Myeclipse,如果有人能给我一个回答这个问题的问题,请放心,我会结束这个问题,但我发现的大多数答案似乎都很简单,与我的问题无关 无论如何,我的问题是我想把一个子查询放到一个聚合查询中。我在下面模拟了一些伪代码,以帮助说明我希望能够做什么。困扰我的是,如果我执行查询并硬编码信息,它工作正常,但与查询不兼容 SELECT COUNT(*), SUM(CASE WHEN subtype IN (SELECT subtype FROM subtype_table WHERE random_li
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
上述代码将给出以下错误:
无法对包含
聚合或子查询
但是如果我用一些文本(比如(1,2,3,4,5)中的子类型)替换查询,它就可以正常工作
有什么方法可以在我的总和中使用查询吗?如果没有,我的其他选择是什么?如果可能的话,我更愿意将其保存在一个查询中。还值得注意的是,在我的实际查询中,我有多个和,每个和都有不同的子查询
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
我真的希望它不是那么简单,我只是没有从我看到的其他例子中得到它。。。如果对我有效,我会尝试并接受它。如果子类型表中有多个匹配项,这不会产生意外的结果吗?我刚刚实现并发现了这一点。将尝试使用第二个。另外,我实现了它,它似乎正在工作。我将需要更长的时间来验证结果,但这似乎是正确的。感谢您的快速响应。此错误是在子查询返回多个结果时产生的。你可以做一个计数。@Alfons不会改为计数给我总数,而不是总数吗?我应用我把1和0作为结果。。。如果这与mainTable.quantity类似,会发生什么?
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