SQL:此处不允许使用组功能

时间:2017-03-16 13:46:47

标签: sql oracle11g

我有这个查询

SELECT * FROM TABLEA A
INNER JOIN TABLEB B ON A.ID = B.ID AND COUNT(B.*) < 4
WHERE A.STATUS = 0

tablea中,ID将有2行数据(2个条目),但在tableb中,相同的ID将包含最多4行数据。我正在尝试获取tableb中少于4行数据的ID并显示该结果。

因此,如果ID 12345在tableb中只有2行数据,则显示该结果。 IF ID 98765在tableb中有4行数据,请忽略此条目。

但是,当我尝试上述查询时,它会显示"group function is not allowed here"。请有人帮忙。

2 个答案:

答案 0 :(得分:4)

如果没有count()goup by条款,则无法使用having。在您的情况下,您需要having

SELECT * FROM TABLEA A
INNER JOIN TABLEB B ON A.ID = B.ID 
WHERE A.STATUS = 0
having COUNT(B.*) < 4

请参阅sqlfiddle

答案 1 :(得分:0)

按照你说的方式写下来......

“我正在尝试获取tableb中少于4行数据的ID并显示该结果”

SELECT * FROM TABLEA a
    JOIN TABLEB b ON b.ID = a.ID 
WHERE A.STATUS = 0
   and (Select count(*) from TABLEB 
       where id = a.Id) < 4

目前尚不清楚,但如果您还只想要TableA中有2行或更多行的ID:

SELECT * FROM TABLEA a
   JOIN TABLEB b ON b.ID = a.ID 
WHERE A.STATUS = 0
   and (Select count(*) from TABLEB 
       where id = a.Id) < 4
   and (Select count(*) from TABLEA 
        where id = a.Id) > 1