SQL Server:如何按城市划分行?

时间:2013-09-17 12:29:33

标签: asp.net sql asprepeater

我可以按升序时间顺序获取行集。我拥有的列是:艺术家姓名,行动日期和城市名称。查询如下所示:

SELECT T_Action.Artist,
   T_ActionDates.ActionDate,
   T_City.Name
FROM   T_Action
   INNER JOIN T_ActionDates
        ON  T_Action.ID = T_ActionDates.ActionID
   INNER JOIN T_ActionPlace
        ON  T_Action.ActionPlaceID = T_ActionPlace.ID
   INNER JOIN T_City
        ON  T_ActionPlace.CityID = T_City.ID
WHERE  T_Action.ETicketEnabled = 1
   AND T_ActionDates.ActionDate >= GETDATE()
ORDER BY
   T_ActionDates.ActionDate

我应该在ASP.NET转发器控件中显示这组行,但它们应按时间排序并按特定城市分别进行分组。例如:

City1:

2013-01-01, Action1

2013-01-02, Action2

城2:

2013-02-01, Action1

2013-02-02, Action2

2013-02-03, Action3

等等。

我可以直接在SQL中执行此操作,还是应该使用后面的代码来安排数据?首选方法是通过SQL。

1 个答案:

答案 0 :(得分:3)

您需要按城市订购结果,然后自己迭代。因此,ORDER BY可能是ORDER BY T_City.Name, T_ActionDates.ActionDate。然后,您需要自己智能地迭代它们以显示您的分组。

SQL为每个查询返回一个具有集合结构的结果集(即,它提前知道列并计算行数据)。它不会做主 - 细节行或类似的东西。这取决于你。