【发布时间】:2011-03-04 08:38:14
【问题描述】:
我正在使用带有 .net 2.0 的 subsonic 2.2,当我包含“Group By”时出现错误。
最初我有这段代码,它运行良好:
SqlQuery etResourceTitle = new Select(ResTitleOngoing.Columns.ResourceTitleID,
ResTitleOngoing.Columns.ResourceTitle,
VenVendor.Columns.Title,
ResTitleOngoingStatus.Columns.Status).From(Tables.ResTitleOngoing);
etResourceTitle.InnerJoin(ResTitleOngoingStatus.ResourceTitleIDColumn, ResTitleOngoing.ResourceTitleIDColumn);
etResourceTitle.LeftOuterJoin(VenVendor.VendorIDColumn, ResTitleOngoing.VendorIDColumn);
etResourceTitle.OrderAsc(ResTitleOngoing.Columns.ResourceTitle);
etResourceTitle.ExecuteDataSet();
然后我添加了“分组依据”,所以这是我的代码:
SqlQuery etResourceTitle = new Select(Aggregate.GroupBy(ResTitleOngoing.Columns.ResourceTitleID),
Aggregate.GroupBy(ResTitleOngoing.Columns.ResourceTitle),
Aggregate.GroupBy(VenVendor.Columns.Title),
Aggregate.GroupBy(ResTitleOngoingStatus.Columns.Status)).From(Tables.ResTitleOngoing);
etResourceTitle.InnerJoin(ResTitleOngoingStatus.ResourceTitleIDColumn, ResTitleOngoing.ResourceTitleIDColumn);
etResourceTitle.LeftOuterJoin(VenVendor.VendorIDColumn, ResTitleOngoing.VendorIDColumn);
etResourceTitle.OrderAsc(ResTitleOngoing.Columns.ResourceTitle);
etResourceTitle.ExecuteDataSet();
我收到错误:“列名不明确 'ResourceTitleID'。”
执行 etResourceTitle.BuildSqlStatement();我得到了:
选择 ResourceTitleID 为“GroupByOfResourceTitleID”, ResourceTitle AS 'GroupByOfResourceTitle', 标题为“GroupByOfTitle”, 状态为“GroupByOfStatus” FROM [dbo].[RES_TitleOngoing] 内部连接 [dbo].[RES_TitleOngoingStatus] ON [dbo].[RES_TitleOngoing].[ResourceTitleID] = [dbo].[RES_TitleOngoingStatus].[ResourceTitleID] 左外连接 [dbo].[VEN_Vendor] ON [dbo].[RES_TitleOngoing].[VendorID] = [dbo].[VEN_Vendor].[VendorID] GROUP BY ResourceTitleID、ResourceTitle、标题、状态 按资源标题 ASC 排序
所以,有人可以帮我解决这个错误。
谢谢 艾伦
【问题讨论】: