【问题标题】:inserting records from specific columns in one table to another table depending on multiple criteria根据多个条件将记录从一个表中的特定列插入到另一个表中
【发布时间】:2015-07-21 21:04:18
【问题描述】:

我正在使用 SQL 服务器,需要将记录从一个表插入另一个空表。我从中提取的第一个表称为 accnt 并具有以下字段:code、invno、invdate、ven 和 amnt,并已导入。记录要转到的表称为 quick 并具有以下字段:日期、编号、名称、帐户、拆分和金额。有些字段是直接复制的,我理解,但我遇到的问题是,根据帐户中的值,某些字段需要填充与 accnt 不同的字段。 acnt 中有一个名为imported 的字段,它要么为空,要么包含一个x。我只想导入导入字段为空的记录

我到目前为止的插入语句应该直接导入:日期、姓名、帐户和金额,而不依赖于任何内容。但是 num 字段根据 accno 字段的值从 accnt 中的不同字段导入。标准是:

如果帐户 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

我如何完成我想做的事情?即使图片中的数据有误,表格也是这样的:

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

【问题讨论】:

    标签: sql sql-server join insert


    【解决方案1】:

    尝试使用单个 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
    

    【讨论】:

    • 这适用于 num 列,但是只插入导入列为空的记录呢
    • 你能在我写的最后添加一个 WHERE 子句吗? WHERE 导入为 NULL
    • 是的。我不知道为什么我没想到。睡眠太少
    • 加班?你需要一个更大的团队。
    猜你喜欢
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    相关资源
    最近更新 更多