Question

There are two update queries and 1st update query execute successfully but 2nd update query is not execute and show the following message:

Msg 512, Level 16, State 1, Line 10
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. The statement has been terminated.

1st update query:

update dbo.TblPrePostApproval 
set 
    dbo.TblPrePostApproval.PAApprovedDate = (select dbo.TblMasterInfo.AppRefDate 
                                             from dbo.TblMasterInfo 
                                             Where dbo.TblMasterInfo.Appid = dbo.TblPrePostApproval.Appid),
    dbo.TblPrePostApproval.PAApprovedTenor = '36',
    dbo.TblPrePostApproval.PAApprovedAmt = (select dbo.TblMasterInfo.AppReqeustAmt 
                                            from dbo.TblMasterInfo 
                                            where dbo.TblPrePostApproval.Appid = dbo.TblMasterInfo.AppID),  
    dbo.TblPrePostApproval.PADisbBr = (select dbo.TblMasterInfo.AppSourceBrName 
                                       from dbo.TblMasterInfo 
                                       where dbo.TblPrePostApproval.Appid = dbo.TblMasterInfo.AppID)

2nd update query

update dbo.TblPrePostApproval   
set 
   dbo.TblPrePostApproval.PAApprovedDate = (select dbo.TestPost.PADate 
                                            from dbo.TestPost 
                                            Where dbo.TestPost.Appid = dbo.TblPrePostApproval.Appid),
   dbo.TblPrePostApproval.PAApprovedTenor = (select dbo.TestPost.PATenor 
                                             from dbo.TestPost 
                                             Where dbo.TestPost.Appid = dbo.TblPrePostApproval.Appid),
   dbo.TblPrePostApproval.PAApprovedAmt = (select dbo.TestPost.PAAmt 
                                           from dbo.TestPost 
                                           where dbo.TestPost.Appid = dbo.TblPrePostApproval.AppID),    
   dbo.TblPrePostApproval.PADisbBr = (select dbo.TestPost.PABr 
                                      from dbo.TestPost 
                                      where dbo.TestPost.Appid = dbo.TblPrePostApproval.AppID)

Where is my problem? Pls any one suggest me.

Was it helpful?

Solution

One of your subqueries (I guess on line 10) is returning more than one row, so it can't check to see if it equals anything, because it's a set, not a value. Just change your query to be more specific. Try adding LIMIT 0, 1 to the end of the subqueries, or TOP (1) after the the SELECT in each subquery.

OTHER TIPS

Why don't you use JOINs for your update? Much easier to read and understand!

Query #1:

UPDATE ppa
SET
    PAApprovedDate = info.AppRefDate,
    PAApprovedTenor = '36',
    PAApprovedAmt = info.AppReqeustAmt,
    PADisbBr = info.AppSourceBrName 
FROM
    dbo.TblPrePostApproval ppa
INNER JOIN 
    dbo.TblMasterInfo.TblMasterInfo info ON info.Appid = ppa.Appid

Query #2:

UPDATE ppa
SET
   PAApprovedDate = tp.PADate,
   PAApprovedTenor = tp.PATenor,
   PAApprovedAmt = tp.PAAmt,    
   PADisbBr = tp.PABr
FROM
    dbo.TblPrePostApproval ppa
INNER JOIN 
    dbo.TestPost tp ON tp.Appid = ppa.AppID
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top