我需要将多个值添加到一个表中,这些值取自其他表或使用其他表计算。我正在使用如下所示的代码。请告诉我们如何计算从其他表中获取的值。我需要从表 transac(tid、sciptname、accnum、transactype、Quantity、date) 插入表 sales(scriptname、accnum、sharesbought、sharessold、remshares)。根据transac类型我需要判断是sharebought还是sharessold,remainingshare是sharebought-sharesold;
我正在使用 .Net 来执行此操作,请告诉我我使用的代码是否正确。
SqlConnection Con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
Con.Open();
string insertsale = "INSERT INTO sales s (accnum, scriptname, shares_bought,sharessold,rem_shares) select case when t.transactype == 'sell' then s.accnum = t.accnum, s.scriptname = t.scriptname. s.shares_bought = 0,s.shares_sold=t.quanity, (s.shares_bought-s.shares_sold) as s.rem_shares
else
s.accnum = t.accnum, s.scriptname = t.scriptname. s.shares_bought = t.quanity,s.shares_sold=0, (s.shares_bought-s.shares_sold) as s.rem_shares from transac t";
SqlCommand cmd = new SqlCommand(insertsale, Con);
cmd.ExecuteNonQuery();
Con.Close();
最佳答案
您发布的 INSERT
声明是错误和奇怪的。您可以在如下所示的单个 SQL 查询中执行此操作。如果需要进行任何更改,您可以按照该行相应地修改给定的查询。
INSERT INTO sales(accnum, scriptname, shares_bought,sharessold,rem_shares)
select accnum, scriptname,
case when transactype = 'sell' then 0 else quanity end as shares_bought,
case when transactype <> 'sell' then quanity else 0 end as sharessold,
case when transactype = 'sell' then (0 - quanity) else (quanity - 0) end as rem_shares
from transac;
关于c# - 向表中添加多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32550605/