SQL 比较 2 个表中的 2 列以完成另一列
SQL Compare 2 columns from 2 tables to complete another column
表格有以下列:
Table A:
TIN,
Fee_Sched,
Effective_Date
Table B:
TIN,
Fee_Sched,
Fee_Sched_Eff
TableB.Fee_Sched & TableB.Fee_Sched_Eff 当前为空白
这就是我想要做的:
我想比较两个 TIN 列,当匹配时,我希望 TableA.Fee_Sched 的相应结果打印在 TableB.Fee_Sched 中,TableA.Effective_Date 的结果打印在 [=30= 中]_Eff
我假设我会使用联接或联合,可能还会使用 IF 语句(如果 tableA.TIN = tableB.TIN,则打印 tableA.fee_sched 和 TableA.Effective_Date)。但是,我不确定如何指定结果应存储在哪一列或如何正确组织代码。
**Example:**
Table A
TIN Fee_Sched Effective_Date
123 ABCEDF 1/1/2011
456 ZYXABC 9/9/2009
TABLE B
TIN Fee_Sched Fee_Sched_Eff
123 blank blank
**Results:**
TABLE B
TIN Fee_Sched Fee_Sched_Eff
123 ABCEDF 1/1/2011
我试过这个:
Insert INTO dbo.TableB (Fee_Sched, Fee_Sched_Eff)
SELECT Fee_Sched, Effective_Date
FROM dbo.TableA Where dbo.TableA.TIN = dbo.TableB.TIN;
但是,我得到这个错误:
Msg 4104, Level 16, State 1, Line 3 The multi-part identifier
"dbo.TableB.TIN" could not be bound.
好吧,首先要做的是:如果你想修改 table B,你正在寻找一个 UPDATE 命令。另外,请注意,您可以在 UPDATE 语句中使用 SELECT,并且可以从 SELECT 中引用 "outer" table。这应该可以解决问题:
更新 B 集 B.fee_sched = (SELECT fee_sched FROM A WHERE A.TIN=B.TIN)
最后,请记住始终 post 您正在使用哪个 RDBMS,因为您可以为每个 RDBMS 编写的内容可能有所不同(Microsoft SQL、Oracle、MySQL ?)
SQL中有四个基本的verbs/actions:
select
检索数据
insert
添加数据
delete
删除数据
update
更改数据。
Update
是您需要使用的那个。使用 MS SQL,您可以使用此 update
查询获得您想要的结果:
update b
set b.Fee_Sched = a.Fee_Sched, b.Fee_Sched_Eff = Effective_Date
from TableB b
join TableA a on a.TIN = b.TIN
表格有以下列:
Table A:
TIN,
Fee_Sched,
Effective_Date
Table B:
TIN,
Fee_Sched,
Fee_Sched_Eff
TableB.Fee_Sched & TableB.Fee_Sched_Eff 当前为空白
这就是我想要做的:
我想比较两个 TIN 列,当匹配时,我希望 TableA.Fee_Sched 的相应结果打印在 TableB.Fee_Sched 中,TableA.Effective_Date 的结果打印在 [=30= 中]_Eff
我假设我会使用联接或联合,可能还会使用 IF 语句(如果 tableA.TIN = tableB.TIN,则打印 tableA.fee_sched 和 TableA.Effective_Date)。但是,我不确定如何指定结果应存储在哪一列或如何正确组织代码。
**Example:**
Table A
TIN Fee_Sched Effective_Date
123 ABCEDF 1/1/2011
456 ZYXABC 9/9/2009
TABLE B
TIN Fee_Sched Fee_Sched_Eff
123 blank blank
**Results:**
TABLE B
TIN Fee_Sched Fee_Sched_Eff
123 ABCEDF 1/1/2011
我试过这个:
Insert INTO dbo.TableB (Fee_Sched, Fee_Sched_Eff)
SELECT Fee_Sched, Effective_Date
FROM dbo.TableA Where dbo.TableA.TIN = dbo.TableB.TIN;
但是,我得到这个错误:
Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "dbo.TableB.TIN" could not be bound.
好吧,首先要做的是:如果你想修改 table B,你正在寻找一个 UPDATE 命令。另外,请注意,您可以在 UPDATE 语句中使用 SELECT,并且可以从 SELECT 中引用 "outer" table。这应该可以解决问题:
更新 B 集 B.fee_sched = (SELECT fee_sched FROM A WHERE A.TIN=B.TIN)
最后,请记住始终 post 您正在使用哪个 RDBMS,因为您可以为每个 RDBMS 编写的内容可能有所不同(Microsoft SQL、Oracle、MySQL ?)
SQL中有四个基本的verbs/actions:
select
检索数据insert
添加数据delete
删除数据update
更改数据。
Update
是您需要使用的那个。使用 MS SQL,您可以使用此 update
查询获得您想要的结果:
update b
set b.Fee_Sched = a.Fee_Sched, b.Fee_Sched_Eff = Effective_Date
from TableB b
join TableA a on a.TIN = b.TIN