我正在尝试在选择组语句中进行选择以对数据进行分组,但我不确定如何在DataTable
中执行此操作。
我的数据库看起来像:
Breed, Name, DOB
Dog, Bob, 1/1/2012
Cat, Ben, 4/7/2012
Cat, Max, 24,1,1978
Dog, Rex, 15,9, 2000
Horse, Sue, 13/3/1999
Horse, Robby, 24,1,1990
Dog, Brodie, 24,1,1988
我在ASPX母版页上的输出是:
Dog
Bob, 1/1/2012
Rex, 15,9, 2000
Brodie, 24,1,1988
Cat
Cat, Ben, 4/7/2012
Cat, Max, 24,1,1978
Horse
Sue, 13/3/1999
Robby, 24,1,1990
到目前为止我所拥有的是:
<asp:Repeater ID="Pets" runat="server" OnItemDataBound="PetsData">
<ItemTemplate>
<h3><%# Eval("Breed") %></h3>
<p><%# Eval("Name") %> (<%# Eval("DOB") %>)</p>
</ItemTemplate>
</asp:Repeater>
和
private DataTable bindData3()
{
string sql = @"SELECT * FROM Pets";
DataTable dr = SqlHelper.ExecuteQuery(sql);
Pets.DataSource = dr;
Pets.DataBind();
return dr;
}
protected void PetsData(object sender, RepeaterItemEventArgs e)
{
}
有人可以帮助解决上述问题吗?
编辑:我认为我是在嵌套转发器之后,因此标题/品种会显示一次,之后会列出所有子项目。任何人都可以帮忙吗?
答案 0 :(得分:0)
您应该可以使用DataTable.Select
来实现这一目标它类似于SQL中的ORDER BY
子句。您可以按品种对数据进行排序,以便将同一品种组合在一起。
然后,当您逐行循环遍历整个表格时,您可以检查您正在阅读的品种是否与之前的品种不同。如果不同,请先打印出品种,然后打印出您的数据。
答案 1 :(得分:0)
试试这个
select p.Breed, c.Name, c.DOB
from
(
select distinct Breed
from Pets
) p inner join Pets c on (c.Breed = p.Breed)
答案 2 :(得分:0)
试试这个。
SELECT * FROM [dbo]。[Pets] Group by Breed,Name,DOB