【发布时间】:2016-08-30 18:15:44
【问题描述】:
这是我想做的一个简化示例。假设有一个名为contractor 的表,如下所示:
name | paid_adjustment_amount | adj_date
Bob | 1000 | 4/7/2016
Mary | 2000 | 4/8/2016
Bill | 5000 | 4/8/2016
Mary | 4000 | 4/10/2016
Bill | (1000) | 4/12/2016
Ann | 3000 | 4/30/2016
有一个contractor 表的视图,我们称之为v_sum,它只是按名称分组的paid_adustment_amount 的SUM。所以它看起来像这样:
name | total_paid_amount
Bob | 1000
Mary | 6000
Bill | 4000
Ann | 3000
最后,还有一个名为 to_date_payment 的表,如下所示:
name | paid_to_date_amount
Bob | 1000
Mary | 8000
Bill | 3000
Ann | 3000
Joe | 4000
我想将 to_date_payment 表中的信息与 v_sum 视图进行比较,并在contractor 表中插入一个新行以显示调整。像这样的:
INSERT INTO contractor
SELECT to_date_payment.name,
to_date_payment.paid_to_date_amount - v_sum.total_paid_amount,
GETDATE()
FROM to_date_payment
LEFT JOIN v_sum ON to_date_payment.name = v_sum.name
WHERE to_date_payment.paid_to_date_amount - v_sum.total_paid_amount <> 0
OR v_sum.name IS NULL
为此使用视图有什么问题吗?我的理解是,如果我错了,请纠正我,视图只是查询的结果集。而且,由于视图是我正在向其中插入新记录的表,我担心可能存在数据完整性问题。
感谢您的帮助!
【问题讨论】:
标签: sql-server