3

ここに私が始めているコードがありますが、それはうまく機能しません:

 UPDATE mt
 SET mt.action = 'A', mt.TQA = TRUE,
     mt.OPID = 'SYS', mt.rc= 'DAR', mt.h='DAR'
 WHERE EXISTS 
 (
     SELECT mt.Account FROM mt AS pm
     WHERE mt.Account = pm.Account
     GROUP BY pm.Account, pm.[amount] + Nz(pm.[SFS],0)
     HAVING (pm.[amount] + Nz(pm.[SFS],0) > 500)
 );

必要なのは、アカウントのすべてのインスタンスの金額と SFS の合計で、500 を超えています。

たとえば、次のテーブルがある場合

 Account   Amount   SFS
 123       350.00   0.00
 123       125.00   125.00
 123       350.00   0.00
 123       125.00   125.00
 234       1600.00  5.00
 345       2.50     4.60

私は取得する必要があります

 123    1200.00
 234    1605.00

上記のコードで得られるのは、グループではなく、さまざまな合計のみです。つまり、500 を超える値には引っかかりません。

 123    350.00
 123    250.00
 234    1605.00

誰でも助けることができますか?これは私たち5人が困惑しています。

4

3 に答える 3

0

2 つのサブクエリを使用する必要がありました。これが機能した最終的なものです。

UPDATE mt
SET rc='DAR'
WHERE  Account IN
(
  SELECT mt.account
  FROM 
    (
    SELECT mt.Account, SUM(mt.[amount]+Nz(mt.[SFS],0)) as total
    FROM mt
    GROUP BY mt.Account
    )    
  WHERE total>=500
);
于 2012-05-03T14:30:16.180 に答える
0

おそらくこれはあなたが探しているものです:

UPDATE mt
SET mt.action = 'A', mt.TQA = TRUE,
    mt.OPID = 'SYS', mt.rc= 'DAR', mt.h='DAR'
WHERE EXISTS 
(
    SELECT mt.Account FROM mt AS pm
    WHERE mt.Account = pm.Account
    GROUP BY pm.Account, pm.[amount] + Nz(pm.[SFS],0)
    HAVING (SUM(pm.[amount] + Nz(pm.[SFS],0)) > 500)
);
于 2012-05-02T22:44:50.207 に答える
0

group by 句から を削除pm.[amount] + Nz(pm.[SFS],0)します-合計でグループ化するのではなく、アカウントのみをグループ化します

于 2012-05-02T18:06:52.473 に答える