SQL group by子句错误子查询返回的值超过1个。这是不允许的,当子查询遵循=,!=,

问题描述:

我有查询按组计算活动客户端并且必须按组计算拾取。如果我不使用GROUP BY Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.SQL group by子句错误子查询返回的值超过1个。这是不允许的,当子查询遵循=,!=,

在4号线它的工作原理,但没有按组划分皮卡:

SELECT [Category] = ISNULL(c.Category, 'Total'), 
     COUNT (hs.ClientID) as '3 Mo Clients', 
     (COUNT (hs.ClientID))/3 as MoAVG 
     ,(select COUNT(PickupID)from Pickup where PickupDate between '2013-01-01' and '2013-03-30' group by CategCode) as '3 Mo Picups' 

FROM Category c 
     LEFT JOIN history hs 
      ON hs.CategCode = c.CategCode 
      where ReccordDate between '2013-01-01' and '2013-03-30' 
GROUP BY Category 
WITH ROLLUP 

这个查询抛出错误。 这就是例子,它是如何工作没有GROUP BY子句中的4行代码
Any Ideas how to fix it?

任何想法如何解决呢?

+0

傻评论:月有31天。 – 2013-03-12 22:46:35

+0

@ypercube现在不会马上使用,它会从用户处获取数据。是'CategCode'在Pickup – Andrey 2013-03-12 22:50:10

+0

为什么你不加入皮卡而不是使用子查询? – 2013-03-12 22:59:36

尝试添加此条件:CategCode = c.CategCode

SELECT [Category] = ISNULL(c.Category, 'Total'), 
     COUNT (hs.ClientID) as [3 Mo Clients], 
     (COUNT (hs.ClientID))/3 as MoAVG 
     ,(SELECT COUNT(PickupID) 
     FROM Pickup 
     WHERE PickupDate between '2013-01-01' and '2013-03-30' 
      AND CategCode = c.CategCode 
     ) AS [3 Mo Picups] 
FROM Category c LEFT JOIN history hs ON hs.CategCode = c.CategCode 
WHERE ReccordDate between '2013-01-01' and '2013-03-30' 
GROUP BY c.CategCode, c.Category 
WITH ROLLUP 

OR

SELECT [Category] = ISNULL(c.Category, 'Total'), 
     COUNT (hs.ClientID) as [3 Mo Clients], 
     (COUNT (hs.ClientID))/3 as MoAVG, 
     SUM(o.cnt) AS [3 Mo Picups] 
FROM Category c LEFT JOIN history hs ON hs.CategCode = c.CategCode 
       CROSS APPLY (
          SELECT COUNT(PickupID) AS cnt 
          FROM Pickup 
          WHERE PickupDate between '2013-01-01' and '2013-03-30' 
           AND CategCode = c.CategCode 
          ) o 
WHERE ReccordDate between '2013-01-01' and '2013-03-30' 
GROUP BY c.Category 
WITH ROLLUP 
+0

我试过这wariant它也给我这个错误'消息8120,级别16,状态1,行7 列'Category.CategCode'在选择列表无效,因为它不包含在聚合函数或GROUP BY条款。“ – Andrey 2013-03-12 22:51:45

+0

客户类别名称第一列图片 – Andrey 2013-03-12 22:54:45

+1

再次尝试编辑答案。 – 2013-03-12 22:55:11