2009-06-22 210 views
2

我有一个结果,这样从SQL查询ASP.NET SQL查询帮助需要

Month Day Customer  Item 
------------------------------------------ 
January 1 John   Pencil 
January 1 Jack   --- 
January 1 Steve  Stapler 
January 2 John   --- 
January 2 Jack   --- 
January 2 Steve  VisitingCard 
January 3 John   --- 
January 3 Jack   Marker 
January 3 Steve  --- 
January 4 John   --- 
January 4 Jack   --- 
January 4 Steve  --- 
January 5 John   Scrapbook 
January 5 Jack   --- 
January 5 Steve  --- 
.... 
.... 
.... 
February 1 John   --- 
February 1 Jack   --- 
February 1 Steve  Marker 

我想这是在一个asp.net的GridView可以表示为下面

       January 
Customer 1 2 3 4 5 6 7 8 9 10 11 ... 25 26 27 28 29 30 31 
--------------------------------------------------------- 
John  P - - - N - - - - -- --  -- -- -- -- -- -- -- 
Jack  - - M - - - - - - -- --  -- -- -- -- -- -- -- 
Steve S V - - - - - - - -- --  -- -- -- -- -- -- -- 
          February 
Customer 1 2 3 4 5 6 7 8 9 10 11 ... 25 26 27 28 
------------------------------------------------ 
John  - - - - - - - - - -- --  -- -- -- -- 
Jack  - - - - - - - - - -- --  -- -- -- -- 
Steve M - - - - - - - - -- --  -- -- -- -- 

我如何在SQL Server 2005或asp.net 2.0中完成这项工作?

请为PIVOT提供示例查询,因为它需要使用一些聚合函数。

+1

有点格式化将不胜感激,所以我们可以更好地理解你的问题。 – 2009-06-22 12:57:54

+1

@Paulo - 完成; @Akmal - 在发布格式化问题时请注意“降价”语法 – 2009-06-22 12:59:02

回答

0

您可能想使用一个工具,如DevExpress,它为您提供pivot table。然后,您可以将数据透视表绑定到您的数据,并为您完成工作。

4

你需要的是Pivot命令。我不熟悉命令的用法,但geekswithblogs有一个关于如何使用它的好教程。

1

我想你想看看在你的SQL查询中使用PIVOT命令。

3

因为PIVOT功能要求您预先定义输出的列,所以不能(干净地)使用PIVOT函数来实现此功能。

由于几个月有不同的天数,你将不得不写12个查询。

IMO pivoting应始终作为UI的一部分完成。聚合是一个适当的事情,在SQL端做虽然

编辑:如果你解释你的数据网格是如何建立的(即P等来自哪里),那么我可以帮助您生成一些适当的SQL。