0

データがExcelシートに保存されているasp.netウィンドウアプリケーションのアプリケーションに取り組んでいます。Excel にシートがあります: Sheet2(STATE,Point) ポイントに基づいて、各州が次の基準を持つメダルを取得します:- ゴールド: 7 ポイント シルバー: 5 ポイント ブロンズ: 4 ポイント

メダルの種類に基づいて各 STATE の合計メダルを取得したいということは、最も多くの金メダルを獲得している STATE がトップであることを意味します。同じ数の銀メダルを持っている場合、より多くの銅メダルを持っている州がより高い位置にあるはずです. 私は次のクエリを実行しました:-

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つの州が同様の金または銀メダルを持っている場合、クエリは機能しません.親切に助けてください..ありがとう

4

1 に答える 1

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";
于 2013-09-21T14:09:27.810 に答える