我正在使用c#中的基本图表,我在我的代码中遇到了一个问题,如果我的表中有一个重复的类别,日期不同,那么该类别会在我的表格中重复。
我认为这可以在SQL而不是C#中解决,但我有点难过。
这是我的表:
这是我的代码:
if (selectedLocation == "All")
{
string selectAllQuery = "SELECT category, counter, date, locationName FROM categoryData WHERE locationName IN (@location, @location2, @location3) AND date BETWEEN @startDate AND @endDate ORDER BY locationName, category";
SqlCommand cmd = new SqlCommand(selectAllQuery, con);
cmd.Parameters.AddWithValue("@startDate", startDate);
cmd.Parameters.AddWithValue("@endDate", endDate);
cmd.Parameters.AddWithValue("@location", "Front Desk");
cmd.Parameters.AddWithValue("@location2", "Harold Cohen");
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
this.resultChart.Series["Footfall"].Points.AddXY(reader.GetString(0), reader.GetInt32(1));
resultChart.ChartAreas["main"].AxisX.Interval = 1;
如您所见,如果我有一个具有不同日期的重复类别,则该类别会重复。我试图将两行中的值的值相加。
编辑:我已经进一步了,现在我可以聚合具有共同类别的行,但我想为每个聚合列添加计数器。
SELECT category, COUNT(id) as count, locationName FROM categoryData WHERE locationName IN (@location, @location2, @location3) AND date BETWEEN @startDate AND @endDate GROUP BY locationName, category ORDER BY locationName, category
答案 0 :(得分:0)
同意Alex Zen。
您的查询应返回所有值,但数据库中的每一行都将作为自己的结果返回,因为程序不知道您认为的相同类别'。您可以在代码(使用linq)或T-SQL中添加GROUP BY并指定您认为相同的内容(在本例中为Category),您应该能够总结该类别的总计。