2017-07-20 7 views
1

私は大量のデータを持つOracleにテーブルを持っています。構造で: その構造は以下の通りである:オラクルのデータを使ってC#を計算する方法は?

code_value  check_rule  check_period connection_rule 
1    16%   w    or 
1    30%   m    or 
1    50%   y    or 
2    130%   w    and 
2    110%   6m    and 

* p.s

code_value date_value  value 
1    20/07/2017  10.5 
1    19/07/2017  11.6 
2    20/07/2017  1000.22 
2    18/07/2017  1700.44 

Iは、このデータのためのテストを定義する別のテーブルを持っています。 "check_period":w - 週、m - 月、y - 年。
** p.s.この列を2つの列に分割すると、私はまだ議論しています.1つは時間量で、もう1つは時間型(例:6、m)です。

私はテストテーブルを取得し、C#のデータを持つテーブル上で実行したいと思います。
しかし、私はそれをやり始める方法がわかりません:
テーブルから値を取り出して計算するにはどうしたらいいですか? 例:
16%check_ruleで最初の行を取る場合は、次のようにします。
var a = check_rule [0];
増加率が週16%かどうかを確認するにはどうすればよいですか?
同様に、「connection_rule」でORを使用する方法は?

私は本当に私の質問が十分明確であることを願っています。

ありがとう!

答えて

1
OracleConnection conn = new OracleConnection("Your Connection string"); 
conn.Open(); 
DataSet dataSet = new DataSet(); 
OracleCommand cmd = new OracleCommand(
    "SELECT * FROM TABLE1 t inner join TABLE2 t1 on t.code_value = t1.code_value" 
); 
cmd.CommandType = CommandType.Text; 
cmd.Connection = conn; 

using (OracleDataAdapter dataAdapter = new OracleDataAdapter()) 
{ 
    dataAdapter.SelectCommand = cmd; 
    dataAdapter.Fill(dataSet); 
} 

DataTable dt = ds.Tables[0]; 
//loop through table's rows/columns 
var myVal = ParseToDouble(dt.Rows["value"].ToString()); 
var checkRule = ParseToDouble(dt.Rows["check_rule"].ToString()); 

if(myVal < checkRule) 
    doSomething(); 


public double ParseToDouble(string s) 
{ 
    return decimal.Parse(s.TrimEnd('%'))/100M; 
} 
+0

は、私が接続する方法と、コードを書く方法を知っている、Uをありがとう、しかし。しかし、dt.Rows ["check_rule"]。toString()を私がそれで計算するものに置き換える方法はわかりません。最初のテーブル> = check_ruleから "value"を実行します。 –

+0

'var num = decimal.Parse(a.TrimEnd(new char [] {'%'、 ''}))/ 100M;' – Adam

+0

@prog_progのようになりますか? – Adam

関連する問題