2013-05-02 45 views
0

我无法弄清楚: 我有一个表称为与市场,zip5,MHI,MHV,TheTable等字段ImportantaRecords我想通过zip5组合所有记录已经TheTable =“毫克” ......我想这:SQL组的问题,当我尝试获取一些信息

select a.Market,a.zip5,count(a.zip5),a.MHI,a.MHV,a.TheTable from 
    (select * from ImportantaRecords where TheTable = 'mg') a 
    group by a.Zip5 

但它给我的经典误差不是aggrefate功能

,然后我尝试这样做:

select Market,zip5,count(zip5),MHI,MHV,TheTable from ImportantaRecords where TheTable = 'mg' 
    group by Zip5 

和同样的东西...

任何帮助吗?

回答

1

您没有说明您所使用的数据库,但如果你得到关于在聚合函数不是列的错误,那么你可能需要未在聚合函数添加列到GROUP BY

select Market, 
    zip5, 
    count(zip5), 
    MHI, 
    MHV, 
    TheTable 
from ImportantaRecords 
where TheTable = 'mg' 
group by Market, Zip5, MHI, MHV, TheTable; 

如果由其他列编组改变,你期待,那么你可以使用子查询得到结果的结果:

select i1.Market, 
    i1.zip5, 
    i2.Total, 
    i1.MHI, 
    i1.MHV, 
    i1.TheTable 
from ImportantaRecords i1 
inner join 
(
    select zip5, count(*) Total 
    from ImportantaRecords 
    where TheTable = 'mg' 
    group by zip5 
) i2 
    on i1.zip5 = i2.zip5 
where i1.TheTable = 'mg' 
+0

感谢的人......第一个查询应该是很明显我和你是对的:这是正确的查询。至于第二个查询:解决了我正在处理的另一个问题......你是一个心理学家吗?我有任何机会吗? :)谢谢很多人... – Nathan 2013-05-02 16:35:04

+0

@Nathan欢迎您! – Taryn 2013-05-02 16:35:25