Sql组行具有相同的值,并将该值放入标头?

前端之家收集整理的这篇文章主要介绍了Sql组行具有相同的值,并将该值放入标头?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想用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

基于列文的代码

  1. DECLARE @Table TABLE (
  2. name varchar(32),Size integer,Date datetime
  3. )
  4.  
  5. INSERT INTO @Table
  6. VALUES ('data1',123,GETDATE())
  7. INSERT INTO @Table
  8. VALUES ('data1',124,GETDATE())
  9. INSERT INTO @Table
  10. VALUES ('data2',333,323,673,444,GETDATE())
  11.  
  12. SELECT *
  13. FROM (
  14. SELECT *
  15. FROM @Table
  16. GROUP BY NAME,size,date
  17. WITH ROLLUP
  18. ) AS X
  19. WHERE NAME IS NOT NULL
  20. AND (
  21. (
  22. Size IS NOT NULL
  23. AND Date IS NOT NULL
  24. )
  25. OR (
  26. Size IS NULL
  27. AND date IS NULL
  28. )
  29. )
  30. ORDER BY NAME,date

猜你在找的MsSQL相关文章