【问题标题】:How to use order by on the basis of 3 condtiton如何根据 3 个条件使用 order by
【发布时间】:2013-09-21 14:00:19
【问题描述】:

我正在研究 asp.net 窗口应用程序中的一个应用程序,其数据存储在 excel 表中。 我在excel中有一张表: Sheet2(状态,点) 根据积分,每个州都会获得具有以下标准的奖牌:- 金牌:7分 银牌:5 分 铜牌:4分

我希望根据奖牌类型获得每个州的总奖牌,这意味着拥有最多金牌的州应该是最高的。如果两个州的金牌数量相同,那么拥有更多银牌的州应该在更高的位置。并且如果 2 个州拥有相同数量的银牌,那么拥有更多铜牌的州应该处于较高的位置。我已完成以下查询:-

OdbcConnection con = new OdbcConnection(ConfigurationManager.ConnectionStrings["SportTech"].ConnectionString);
//string query = "select STATE,sum(Point) as MEDAL from [Sheet2$] Group by STATE order by sum(Point) desc";
//string query = "SELECT STATE,SUM(Point) AS MEDAL,(CASE Point == 7: 1 END) AS GoldCount FROM [Sheet2$] GROUP BY STATE ORDER BY SUM(Point) DESC";
string query = "select STATE,sum(Point) as MEDAL, sum(IIF(point = 7,1,0)) as Gold, sum(IIF(point = 5,1,0)) as Silver, sum(IIF(point = 4,1,0)) as Bronce from [Sheet2$] group by STATE order by sum(IIF(point = 7,1,0)) desc";
OdbcCommand cmd = new OdbcCommand(query, con);
OdbcDataAdapter da = new OdbcDataAdapter(cmd);
con.Open();
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();

但如果 2 个州拥有类似的金牌或银牌,则查询不起作用。请帮助我..谢谢

【问题讨论】:

  • 我应用了代码格式化,因为它真的是一团糟。
  • 现在已经格式化。现在请帮我解决这个问题

标签: asp.net odbc


【解决方案1】:

假设您对奖牌的计算有效,您应该能够简单地将额外的参数添加到 ORDER BY 子句中:

string query = "select STATE,sum(Point) as MEDAL, sum(IIF(point = 7,1,0)) as Gold, sum(IIF(point = 5,1,0)) as Silver, sum(IIF(point = 4,1,0)) as Bronce from [Sheet2$] group by STATE order by sum(IIF(point = 7,1,0)) desc,  sum(IIF(point = 5,1,0)) desc,  sum(IIF(point = 4,1,0)) desc";

【讨论】:

  • 还有一件事先生,如果我想计算总金+总银+总铜,那该怎么做。请帮助我。谢谢
  • 我认为您已经回答了自己的问题。试试看。
  • 我做了很多,Sir.Thanx。
猜你喜欢
  • 1970-01-01
  • 2015-11-05
  • 2017-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多