私の現在の質問は次のとおりです。目的は、最初の入金から30日以内に少なくとも500ドルの預金を受け取った口座を見つけることです。いくつかのアカウントは閉じられ、再オープンされているため、 'WHERE'句の最初の行です。 NO「」を有する句がなかったかのようにSQL - 結果がグループ化され、having句でフィルタリングされた後、どのようにして列を集計できますか?
and sum(Deposits.amount) >= 500
、アカウントのすべてのトランザクションを含めている:
select Deposits.accountNumber,
min(Deposits.transDate) as "first deposit",
Deposits.transDate,
CAST(DATEADD(d,30,min(Deposits.transDate)) as date) as "30 days",
sum(Deposits.amount) as "sum",
Deposits.amount,
Members.accountOpenDate
from Deposits
inner join Members on Deposits.accountNumber = members.accountNumber
where Deposits.transDate >= members.accountOpenDate
and Deposits.accountNumber = 123456
group by Deposits.accountNumber
having Deposits.transDate between min(Deposits.transDate) and DATEADD('d',30,min(Deposits.transDate))
and sum(Deposits.amount) >= 500
私はに実行しています問題は、HAVING文の最後の行があることです。それはHAVING "の最初の行から除外されたトランザクションを加味されています。ここでは
having Deposits.transDate between min(Deposits.transDate) and DATEADD('d',30,min(Deposits.transDate))
は私のデータは、(口座番号によってグループ化せずに)次のようになります。
accountNumber amount sum
123456 $100 $6,500
123456 $50 $6,500
123456 $50 $6,500
そしてここにはあります私が手に入れようとしているもの:
accountNumber amount sum
123456 $100 $200
123456 $50 $200
123456 $50 $200
ありがとうございます。私のDBMSはIntersystems-Cacheです。参照番号へのリンクはHereです。あなたが最初に、あなたが
データベースでサポートされているかどうかは不明ですが、SELECTでそのクエリをラップすることもできます。例:SELECT * FROM(あなたの質問はここにあります)i WHERE SUM(i.amount)> = 500 –