日期:2014-05-18  浏览次数:20627 次

求助,关于分组的一个很基础的问题
我现在有一个表,字段是从A到Z 24个字段,A是主键,从1自增长,现在我要得到N字段分组后的所有字段数据,我想到的查询语句是在每个字段都加上聚合函数 大致是这样的:
SQL code

SELECT MIN(A),MIN(B),SUM(C)...MIN(Z) FROM 表 group by N


我觉得这样写有问题
1.我只能得到一组后最大或最小的数据,该怎么得到一组中间的数据。
2.每个字段都要加聚合函数好像不是很高,有没有优化方法?

------解决方案--------------------
楼主,先假设就有A B N三个字段,按N分组,你需要得到怎样的结果集?加点测试数据说明下。
------解决方案--------------------
SQL code

select N,stuff((select ','+ltrim(A) from tb where N = t.N for xml path('')),1,1,'') as A,
         stuff((select ','+ltrim(A) from tb where N = t.N for xml path('')),1,1,'') as B
from tb t
group by N

------解决方案--------------------
SQL code
SELECT A,...,Z FROM (
select ROW_NUMBER()OVER(PARTITION BY N ORDER BY GETDATE()),A,B,C,...,Z FROM 表) A