我在Oracle中有一个包含大量数据的表。在以下结构中:
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
我有另一个表定义了此数据的测试: 其结构如下:
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
*附言"check_period":W - 表示周,M - 表示月份,Y - 表示年份。
** 附言我仍在争论是否将此列分为两列:一列用于时间量,另一列用于时间类型(例如:6,m(。
我想在 C# 上获取测试表并在带有数据的表上运行它。
但我不知道如何开始做:
如何从表中获取值并使用它进行计算? 例如:
如果我取第一行,check_rule 16%,我会做:
var a = check_rule[0];
如何检查每周增加16%?
以同样的方式如何在"connection_rule"上使用OR?
我真的希望我的问题足够清楚。
谢谢你!
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;
}