2013-09-21 9 views
0

我正在一個應用程序的asp.net窗口應用程序的數據存儲在excel工作表。 我有在Excel中的片材: Sheet 2中(STATE,點) 點的基礎上,所述的每個狀態獲得已以下標準獎牌: - 黃金:7分 銀:5分 青銅:4分如何使用訂單的基礎上的3 condtiton

我想根據他們的獎牌類型獲得每個州的總獎牌,這意味着擁有最多金牌的州應該是最高的。如果兩個州的金牌數相同,那麼擁有更多銀牌的州應該在更高的位置上。並且如果2 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 STATE medals.kindly幫助me..Thanx

+1

我應用了代碼格式化,因爲它是一個真正的混亂弄清楚。 – roland

+0

它現在格式化了。現在好心的幫我解決這個問題 –

回答

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"; 
+0

Thanx先生它爲我工作。 –

+0

還有一件事,先生,如果我想計算總金+總銀+總青銅,那麼該怎麼做。親切地幫助我。謝謝 –

+0

我想你幾乎回答了你自己的問題。試試看。 – NYCdotNet