在复制另一条记录时更新记录

时间:2014-05-26 18:19:03

标签: sql

在我的表(tbl_emi)中,记录cardno下有一些重复的值,我希望下面的更新查询只更新表中只有一个唯一cardno的记录。 RecAmt应使用extraamt的总和进行更新,其中日期为最低日期+ recamt日期为今天的日期。

UPDATE e5
SET RecAmt=
  ( SELECT
     (SELECT sum(extraamt)
      FROM Tbl_Emi e1
      WHERE LastRecDate<(CAST(GETDATE() AS DATE))
        AND e1.CardNo=e.CardNo) +
     (SELECT RecAmt
      FROM Tbl_Emi e2
      WHERE LastRecDate=(CAST(GETDATE() AS DATE))
        AND e2.CardNo=e.CardNo)
   FROM Tbl_Emi e
   WHERE e.lastrecdate=(CAST(GETDATE() AS DATE))
     AND Status in('N','P')
     AND e.CardNo=e5.CardNo--step 8 manually add the extra amount to the recovery amount
 )
FROM Tbl_Emi e5
WHERE LastRecDate=(CAST(GETDATE() AS DATE))
  AND Status in('N','P')

1 个答案:

答案 0 :(得分:0)

对于您提出的问题,您的查询过于复杂。我无法修复此查询,因为您没有告诉我它应该做什么或者您想要完成什么。

所以我只是给你一个解决你所描述的问题的查询:

仅更新cardNo唯一的行。我不知道更新它的内容(你没有告诉)所以我只是用虚拟值更新它:

UPDATE Tbl_Emi e SET RecAmt = 1
WHERE EXISTS
    (SELECT * FROM Tbl_Emi
    WHERE e.CardNo = CardNo
    GROUP BY CardNo
    HAVING COUNT(*) = 1);