在sql中的子查询中使用group by子句

时间:2011-11-30 01:29:08

标签: sql

我试图在from子句

中的子查询中使用group by子句
select userID,count(id) 
from 
(
    (
        select id,max(bidAmount),userID 
        from Bids 
        group by id,bidAmount
    ) 
    group by userID
);

但这会产生错误

  

错误:靠近“group”:语法错误

是否可以在sql中的from子句中的子查询中使用group by子句?

4 个答案:

答案 0 :(得分:6)

检查你的(),它们不在正确的位置。应该是更像这样的东西:

select w.userID,count(w.id) 
from (select id,max(bidAmount),userID from Bids group by id, userID) w 
group by w.userID

答案 1 :(得分:6)

试试这个:

select userID,count(id) 
from (

select id,max(bidAmount),userID from Bids group by id,userID

) as tmp

 group by userID

答案 2 :(得分:3)

您可以在子查询中使用group by,但语法已关闭。

select userID,count(id)  
from  
(
        select id,max(bidAmount),userID  
        from Bids  
        group by id,userID
)
GROUP BY userid

答案 3 :(得分:-1)

我的问题是:

在此查询中,我将知道一篇文章编号中有多少项作业。 所以我写了这个查询:

SELECT 
  Auftrag_det.BNR AS Auftrag_Nr, 
  Artikel.ZNR_ALPHAN AS Artikel_Nr, 
  Artikel.Bezeichnung1, Auftrag_det.R_STK AS Menge, 
  CONVERT(nvarchar, DATENAME(iso_Week, Auftrag.DAT_WUTER)) + N'/' + CONVERT(nvarchar, DATENAME(yy, Auftrag.DAT_WUTER)) AS KW_Jahr, 
  Artikel.BestandFrei, 
  Artikel.BestandReserviert, 
  Artikel.BestandGesperrt, 
  Artikel.BestandBestelltFrei, 
  Artikel.BestandBestelltReserviert,
  (Select Count(a.BNR)
    from Auftrag a, Auftrag_det b, Artikel c
    Where b.ZNR_ALPHAN=c.ZNR_ALPHAN 
    AND (a.BNR = b.BNR) 
    AND (a.ERLEDIGT IS NULL) 
    AND (a.DAT_WUTER IS NOT NULL) 
    AND (c.Bezeichnung1 <> N'Verpackungskosten') 
    AND (b.R_STK > 0)
  ) 
FROM Auftrag_det 
INNER JOIN Auftrag ON Auftrag_det.BNR = Auftrag.BNR
INNER JOIN Artikel ON Auftrag_det.ZNR_ALPHAN = Artikel.ZNR_ALPHAN
WHERE (Auftrag_det.ERLEDIGT IS NULL) 
AND (Auftrag.DAT_WUTER IS NOT NULL) 
AND (Artikel.Bezeichnung1 <> N'Verpackungskosten') 
AND (Auftrag_det.R_STK > 0)

我得到了一个结果,但不是每篇文章都特别。
我无法在ZNR_ALPHAN(这是商品编号)的子查询中分组