2014-03-27 47 views
0

我的样本SQL查询如何选择列,而不包括他们GROUP BY访问SQL

SELECT EID,p,p1,p2,p3 FROM table 1 GROUP BY EID; 

给错误不是总function.I的一部分,希望通过组仅EID并非所有其他P,P1 ,p2,p3。我如何指定在SQL查询。

+0

您需要使用页上的聚集,P1 ,...否则SQL Server如何知道如何“合并”它们? – Michael

+0

@ vuyy1182这在Postgresql上也是可行的(尽管实现不佳,MySQL也是如此)。这在SQL Server和Microsoft Access中是不可能的。请参阅:http://www.ienablemuch.com/2010/08/postgresql-recognizing-functional.html –

回答

4

在SQL的大多数方言中,如果该列不在group by子句中,则必须指定哪一个列。比如,也许你想要的最小值:

SELECT EID, min(p), min(p1), min(p2), min(p3) 
FROM table 1 
GROUP BY EID; 

或者,如果你从一个特定的记录想所有的值,用firstlast

SELECT EID, first(p), first(p1), first(p2), first(p3) 
FROM table 1 
GROUP BY EID;