我想用sql对行进行分组,我的结果集如下
名称大小日期
DATA1 123 12/03/2009
数据1 124 15/09/2009
DATA2 333 02/09/2010
DATA2 323 02/11/2010
数据2 673 2014年2月9日
DATA2 444 05/01/2010
我想像这样分组结果集:
数据1
123 12/03/2009
124 15/09/2009
DATA2
333 02/09/2010
323 02/11/2010
673 2014年2月9日
444 05/01/2010
是否可以使用纯sql执行此操作?
干杯.
解决方法
GROUP BY WITH ROLLUP(你真的没有分组 – 所以你会每列都是GROUP BY)
http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html
http://chiragrdarji.wordpress.com/2008/09/09/group-by-cube-rollup-and-sql-server-2005/
http://databases.about.com/od/sql/l/aacuberollup.htm
http://www.adp-gmbh.ch/ora/sql/group_by/group_by_rollup.html
http://msdn.microsoft.com/en-us/library/bb522495.aspx
基于列文的代码:
- DECLARE @Table TABLE (
- name varchar(32),Size integer,Date datetime
- )
- INSERT INTO @Table
- VALUES ('data1',123,GETDATE())
- INSERT INTO @Table
- VALUES ('data1',124,GETDATE())
- INSERT INTO @Table
- VALUES ('data2',333,323,673,444,GETDATE())
- SELECT *
- FROM (
- SELECT *
- FROM @Table
- GROUP BY NAME,size,date
- WITH ROLLUP
- ) AS X
- WHERE NAME IS NOT NULL
- AND (
- (
- Size IS NOT NULL
- AND Date IS NOT NULL
- )
- OR (
- Size IS NULL
- AND date IS NULL
- )
- )
- ORDER BY NAME,date