我正在构建SQL Update Query 此查询必须显示每个供应商的最高付费供应商和每月付款的详细信息,同时显示供应商的总付款
VendorTable
Vendor varchar(100)
Month Date
MonthlyAmt int
TotalAmt int
-
Vendor Month MonthlyAmt TotalAmt
Vendor1 Jan-15 $100 NULL
Vendor2 Mar-16 $250 NULL
Vendor3 Sep-16 $300 NULL
Vendor1 Dec-16 $140 NULL
Vendor2 Feb-17 $210 NULL
Vendor1 Apr-17 $400 NULL
Vendor3 Aug-17 $420 NULL
Vendor2 Nov-17 $330 NULL
Vendor2 Mar-18 $110 NULL
Vendor1 May-18 $230 NULL
最终结果的示例
Vendor Month MonthlyAmt TotalAmt
Vendor1 Jan-15 $100 $870
Vendor2 Mar-16 $250 $900
Vendor3 Sep-16 $300 $720
Vendor1 Dec-16 $140 $870
Vendor2 Feb-17 $210 $900
Vendor1 Apr-17 $400 $870
Vendor3 Aug-17 $420 $900
Vendor2 Nov-17 $330 $900
Vendor2 Mar-18 $110 $900
Vendor1 May-18 $230 $870
我的更新看起来像这样 但是处理需要很长时间 我想知道是否有更快的方法来做到这一点
UPDATE VendorTable
SET TotalAmt = (SELECT SUM(MonthlyAmt) FROM VendorTable B WHERE B.Vendor = A.Vendor)
from VendorTable A
答案 0 :(得分:3)
尝试类似......
TotalAmt
您的查询速度很慢,因为外部更新查询返回的每一行都会执行内部选择。
同时检查表中是否有任何索引,其中包含{{1}}列,这些索引也会降低您的更新速度。