나는 groupid의, masteraccountnames 및 CashAmountDiff의 목록을 반환하려고하는데, 같은 groupid를 가진 거래의 CashAmount 합계가 모든 날짜에 대해 100보다 큰 경우. 사례와 하위 그룹 집계
테이블 스키마
그렇게 같다 :TradeT1
TradeId | SubAccountId | MasterAccId | GroupId | TradeDate | TradeType
MasterAccount
Id | MasterAccName
하위 계정
Id | SubAccName | MasterAccountId
각 SubAccount는 MasterAccount에 연결됩니다. 그것은 다 대일 관계입니다.
TradeType은 직불 카드이든 신용 카드이든 거래의 '방향'을 결정합니다. groupid 당 빚과 크레딧을 추가하는 데 문제가 있습니다. 내 쿼리는 모든 것을 합산하는 것입니다. CashAmount를 사용하는 경우 (CashAmount * -1 곱하기) 사례를 통합하는 방법을 잘 모르겠습니다.
단일 groupid에 항상 두 개 이상의 tradeid가 연결됩니다.
나는 나의 노력과 함께 여기에 SQL 바이올린의 테이블이 있습니다 http://www.sqlfiddle.com/#!3/45580/1/0
SELECT
t.groupId,
ma.MasterAccName,
sum(CASE WHEN t.tradetype = 'Credit'
THEN sum(-1*t.cashamount)
ELSE sum(t.cashamount))
END as CashDiff
FROM tradet1 t
JOIN masteraccount ma
ON t.masteraccid = ma.id
WHERE t.groupid > -1
GROUP BY t.groupid, ma.MasterAccName
HAVING count(t.groupid) > 1 and sum(t.cashamount) > 100
감사 어떤 도움.
없음 CashAmount과 같을 것이다 또는 CashAmountDiff 열이 – Paparazzi
코드를 업데이트하지만 컴파일 정의되지 않았습니다. http://www.sqlfiddle.com/#!3/45580/9 – user1773949