2012-11-26 6 views
0

Quelle est l'autre manière d'écrire cette requête ??Instruction de mise à jour de procédure stockée SQL

Update TempTableDisplay   
SET _cPayment = case When exists(
        select Tofield from #UFTFMappingTempTable where ToField='Payment') 
        then IsNull(S.Payment,0) 
       else dbo.fnGetMaximum((ISNULL(M.NetTaxDue0,0) + ISNULL(M.NetTaxDue1,0) + ISNULL(M.NetTaxDue2,0) + ISNULL(M.NetTaxDue3,0) + ISNULL(M.NetTaxDue4,0) + ISNULL(M.NetTaxDue5,0) + ISNULL(M.NetTaxDue6,0)),0) 
       end 
+0

Microsoft SQL Server 2008 R2 – hks

+0

Je ne comprends pas votre question: pourquoi voulez-vous l'écrire d'une autre manière? – Pondlife

Répondre

0

Voici une autre façon:

if exists(select Tofield from #UFTFMappingTempTable where ToField='Payment') 
begin 
    Update TempTableDisplay   
    SET _cPayment = IsNull(S.Payment,0) 
end 
else 
begin 
    Update TempTableDisplay 
    set _cPayment = dbo.fnGetMaximum((ISNULL(M.NetTaxDue0,0) + ISNULL(M.NetTaxDue1,0) + ISNULL(M.NetTaxDue2,0) + ISNULL(M.NetTaxDue3,0) + ISNULL(M.NetTaxDue4,0) + ISNULL(M.NetTaxDue5,0) + ISNULL(M.NetTaxDue6,0)),0) 
end 

Mais comme vous l'avez probablement remarqué, vous avez omis beaucoup de la requête - par exemple à quelles tables font référence 'S' ou 'M'? Sans cette information, rien de tout cela ne va fonctionner.

Questions connexes