Sql server ave使用活接头代替或以前。但是,我应该避免所有的ORs和INs吗?我可以想到一个不相关的查询,其中我的条件在in子句中有6个项。我是否应该用5个联合体编写6个查询#3.抓得好。我感谢你的帮助#2.这应根据实际执行计划予以考虑。如果您没有大量的记录,或/I
Sql server ave使用活接头代替或以前。但是,我应该避免所有的ORs和INs吗?我可以想到一个不相关的查询,其中我的条件在in子句中有6个项。我是否应该用5个联合体编写6个查询#3.抓得好。我感谢你的帮助#2.这应根据实际执行计划予以考虑。如果您没有大量的记录,或/I,sql-server,Sql Server,ave使用活接头代替或以前。但是,我应该避免所有的ORs和INs吗?我可以想到一个不相关的查询,其中我的条件在in子句中有6个项。我是否应该用5个联合体编写6个查询#3.抓得好。我感谢你的帮助#2.这应根据实际执行计划予以考虑。如果您没有大量的记录,或/IN可能仍然会得到一个合理的时间。此外,对于复杂查询,您可以定义一个临时表并执行多个插入。除了可能的性能优化之外,它还允许更轻松的调试(每次插入后临时检查)。 name | paid_adjustment_amount | adj_date Bo
ave使用活接头代替或以前。但是,我应该避免所有的ORs和INs吗?我可以想到一个不相关的查询,其中我的条件在in子句中有6个项。我是否应该用5个联合体编写6个查询#3.抓得好。我感谢你的帮助#2.这应根据实际执行计划予以考虑。如果您没有大量的记录,或/IN可能仍然会得到一个合理的时间。此外,对于复杂查询,您可以定义一个临时表并执行多个插入。除了可能的性能优化之外,它还允许更轻松的调试(每次插入后临时检查)。
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
name | total_paid_amount
Bob | 1000
Mary | 6000
Bill | 4000
Ann | 3000
name | paid_to_date_amount
Bob | 1000
Mary | 8000
Bill | 3000
Ann | 3000
Joe | 4000
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
SELECT to_date_payment.name,
to_date_payment.paid_to_date_amount - v_sum.total_paid_amount,
GETDATE()
FROM to_date_payment
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
UNION ALL
SELECT to_date_payment.name,
to_date_payment.paid_to_date_amount, -- or NULL if this is really intended
GETDATE()
FROM to_date_payment
-- NOT EXISTS is usually faster than LEFT JOIN ... IS NULL
WHERE NOT EXISTS (SELECT 1 FROM v_sum V WHERE V.name = to_date_payment.name)