我有一个像
这样的sql语句SELECT column1, column2,column3, column4 FROM table1 GROUP BY column3
或
SELECT * FROM table1 GROUP BY column3
我想要一个根据column3分组的结果,还有其他列。但它给出了一个错误。我该怎么办?感谢..
答案 0 :(得分:0)
您要做的是未定义的行为。在列上指定GROUP BY
时,其他列中可能有多个值。数据库没有明智的方法来确定要显示的值。
PARTITION
可能就是你要找的东西。请检查此链接:http://msdn.microsoft.com/en-us/library/ms189461.aspx
答案 1 :(得分:0)
分组适用于SUM()等聚合函数。将个别字段分组是没有意义的。
SELECT SUM(col1), MAX(col2), col3 from t1 group by col3
答案 2 :(得分:0)
如果我理解你的预期最终结果, 尝试使用ORDER而不是GROUP
如果不能给你所需的输出,我道歉。
SELECT column1, column2,column3, column4
FROM table1
ORDER BY column3
SELECT *
FROM table1
ORDER BY column3
答案 3 :(得分:0)
我没有完全理解你的问题,你需要这个查询,但也许你可以使用这个:
/*t-sql example*/
create table #T (id int identity(1,1), col1 varchar(5), col2 varchar(5), col3 varchar(6))
insert #T (col1,col2,col3) values ('aaa','a1e','group1')
insert #T (col1,col2,col3) values ('bbb','a2e','group1')
insert #T (col1,col2,col3) values ('ccc','a3e','group1')
insert #T (col1,col2,col3) values ('ddd','a4e','group2')
insert #T (col1,col2,col3) values ('eee','a5e','group2')
insert #T (col1,col2,col3) values ('fff','a6e','group3')
select id,col1,col2,#T.col3,subq.cnt from #T
join
(select col3, COUNT(*) as 'cnt' from #T group by col3) as subq
on
#T.col3 = subq.col3
我使用了子查询,但您可以使用临时表或WITH。另外,我仅使用“count”进行聚合。
最高