需要ASP.NET SQL查询帮助

时间:2009-06-22 12:56:34

标签: asp.net sql-server-2005 tsql

我从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的示例查询,因为它需要使用一些聚合函数。

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

你不能(干净地)使用PIVOT函数实现这一点,因为PIVOT函数要求你预先定义输出的列。

由于几个月的天数不同,您必须编写12个查询。

IMO旋转应始终作为UI的一部分完成。尽管

,但在SQL端进行聚合是一件合适的事情

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

答案 2 :(得分:1)

我认为您希望在SQL查询中使用PIVOT命令。

答案 3 :(得分:0)

您可能希望使用DevExpress之类的工具,为您提供pivot table。然后,您可以将数据透视表绑定到您的数据,它可以为您完成工作。