将数据移动到正确的记录

时间:2018-05-31 18:01:03

标签: sql tsql

我有一张表,需要更正数据。以下是一条记录的示例。销售closed_unit中的数据基本上需要在Agent_to_Agent Ref close_unit中。我已经尝试了各种不同的东西,但是我无法理解它。我确信这很简单,我认为我只是看错了方向。非常感谢任何帮助!

当前(不良)数据:

+---------+---------+--------------------+-------------+-----------------+----------------+-------------------+----------+
| sale_no | payeeID |      ComType       | close_units |   record_type   | ref_agent_type | referring_agentID | ref_side |
+---------+---------+--------------------+-------------+-----------------+----------------+-------------------+----------+
|    7586 |    1001 | Listing            |           1 | Listing         | NULL           |                 0 |          |
|    7586 |    2001 | Selling            |           1 | Selling         | NULL           |                 0 |          |
|    7586 |    3254 | NULL               |           0 | Off The Top Ref | NULL           |                 0 | L        |
|    7586 |    4684 | Agent to Agent Ref |           0 | Agent Paid Ref  | Selling        |              2001 |          |
+---------+---------+--------------------+-------------+-----------------+----------------+-------------------+----------+  

预期结果:

+---------+---------+--------------------+-------------+-----------------+----------------+-------------------+----------+
| sale_no | payeeID |      ComType       | close_units |   record_type   | ref_agent_type | referring_agentID | ref_side |
+---------+---------+--------------------+-------------+-----------------+----------------+-------------------+----------+
|    7586 |    1001 | Listing            |           1 | Listing         | NULL           |                 0 |          |
|    7586 |    2001 | Selling            |           0 | Selling         | NULL           |                 0 |          |
|    7586 |    3254 | NULL               |           0 | Off The Top Ref | NULL           |                 0 | L        |
|    7586 |    4684 | Agent to Agent Ref |           1 | Agent Paid Ref  | Selling        |              2001 |          |
+---------+---------+--------------------+-------------+-----------------+----------------+-------------------+----------+  

1 个答案:

答案 0 :(得分:0)

以下查询会将值复制到“Agent to Agent Ref”行:

update my_table t1 set close_units = (
  select close_units from my_table t2 
    where t2.sale_no = t1.sale_no and t2.ComType = 'Selling'
  )
  where ComType = 'Agent to Agent Ref';

这个会将“销售”值重置为零:

update my_table t1 
  set close_units = 0
  where ComType = 'Selling'
    and exists (
      select close_units from my_table t2 
        where t2.sale_no = t1.sale_no and t2.ComType = 'Agent to Agent Ref'
    )