내 현재 검색어입니다 : 첫 번째 입금 후 30 일 이내에 입금액이 500 달러 이상인 계정을 찾는 것이 목표입니다. 일부 계정이 닫히고 다시 열리므로 'WHERE'절의 첫 번째 줄이 표시됩니다. 더 'HAVING'조항이 없었다 것처럼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 구문의 마지막 줄 것입니다 .
accountNumber amount sum
123456 $100 $6,500
123456 $50 $6,500
123456 $50 $6,500
그리고 여기에 있습니다 :
여기having Deposits.transDate between min(Deposits.transDate) and DATEADD('d',30,min(Deposits.transDate))
내 데이터 (계좌 번호로 그룹화없이) 모습입니다 : 그것은 'HAVING'의 첫 번째 줄에서 제외됩니다 거래에서 인수 분해한다 내가 무엇을 얻으려고하는지 :
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 –