根据多个条件将一个表中特定列的记录插入另一个表

时间:2015-07-06 12:38:31

标签: sql sql-server join insert

我使用SQL服务器并需要将记录从一个表插入到另一个空表中。我从第一个表中拉出来的是accnt,它有以下字段:code,invno,invdate,ven和amnt,以及导入。记录所要进入的表格是快速调用的,并且包含以下字段:日期,数字,名称,帐户,拆分和金额。我理解的一些字段只是直接复制,但我遇到的问题是,某些字段需要根据帐户中的值来填充与accnt不同的字段。 并且在accnt中有一个名为imported的字段,该字段为空或其中包含x。我只想导入导入字段为空的记录

我到目前为止的插入语句应该导入:日期,名称,帐户和金额,而不是取决于任何东西。但是num字段根据accno字段的值从accnt中的不同字段导入。标准是:

如果帐户< 7000然后num =代码 如果帐户> 7000然后num = invno

这是我尝试过的,但它没有用

DELETE FROM quick
INSERT INTO quick (date, num, name, account, amount) 
if accnt.accno < '7000'
   then SELECT invdate, code, ven, accno, amnt from accnt
if accnt.accno > '7000'
   then SELECT invdate, invno, ven, accno, amnt from accnt

我如何完成我想要做的事情?即使图片中的数据错误,表格看起来像这样:

enter image description here

稍后将使用更新查询填充类型和拆分字段。

1 个答案:

答案 0 :(得分:2)

使用单个SELECT尝试并使用CASE分隔两种情况。

DELETE FROM quick
INSERT INTO quick (date, num, name, account, amount) 
SELECT invdate,
case when accnt.accno < '7000' then code else invno end
, ven, accno, amnt from accnt