2016-09-07 2 views
0

개인에 대한 게시되지 않은 트랜잭션 합계를 계산하려고합니다. 나는이 작업을 수행하는 하위 쿼리를 필요로 생각하고 있지만 나는하위 쿼리를 사용하여보고 할 개인의 합계를 찾습니다

이 오류가이 ( 하위 쿼리는 1 개 이상의 값을 반환 한 메시지 512, 수준 16, 상태 1, 줄.이 때 허용되지 않습니다 받기 하위 쿼리는 =,! =, <, < =,>,> = 또는 하위 쿼리가 식으로 사용될 때 나타납니다.) 나는 그 오류를 얻을 것이라고 알고 있었지만 어떻게 묶을 지 잘 모르겠습니다. 탁자.

select ar.id_num, 
nm.last_name, 
nm.first_name, 
am.ADDR_LINE_1, 
am.ADDR_LINE_2, 
am.CITY, 
am.STATE, 
am.ZIP, 
nm.EMAIL_ADDRESS, 
ar.ar_bal_to_dte, 
ar.UNAPPLIED_FIN_AID, 
lt.Last_term_end_date 
,ar.ar_bal_to_dte + ar.UNAPPLIED_FIN_AID as 'Unapplied Aid', 
case when getdate()<= arm.end_dte then 'Dir Deposit' else 'Check' end as 'pmt type', 
'Unposted Charges' = (select SUM (trans_amt) from TRANS_HIST where SOURCE_CDE = '@C' AND SUBSID_CDE = 'AR' group by ID_NUM) 
from SUBSID_MASTER ar left outer join ccsc_last_term_end_date_v lt on ar.ID_NUM = lt.id_num 
left outer join SUBSID_MASTER_EPAY_ACCT arm ON AR.ID_NUM = arm.ID_NUM 
inner join TRANS_HIST th ON AR.ID_NUM = th.ID_NUM 
JOIN NAME_MASTER nm ON ar.ID_NUM = nm.ID_NUM 
JOIN ADDRESS_MASTER am on ar.ID_NUM = am.ID_NUM 
where ar.SUBSID_CDE = 'AR' 
and ar.AR_BAL_TO_DTE < 0 and am.ADDR_CDE = '*LHP' 
order by lt.Last_term_end_date 

사람이 나를 위해 몇 가지 조언이 있습니까 : 여기에 전체 쿼리입니까? 대단히 감사하겠습니다.

'Unposted Charges' = (select SUM(trans_amt) from TRANS_HIST where SOURCE_CDE = '@C' AND SUBSID_CDE = 'AR' group by ID_NUM) 

첫째, 정말 어색 같습니다

답변

1

이 쿼리에서 유일하게 하위 쿼리입니다. 문자열 및 날짜 상수에는 작은 따옴표 만 사용하십시오. 대괄호 사용 :

[Unposted Charges] = (select SUM(trans_amt) from TRANS_HIST where SOURCE_CDE = '@C' AND SUBSID_CDE = 'AR' group by ID_NUM) 

문제는 GROUP BY입니다. 따라서 각 ID_NUM에 대해 다른 행을 반환하므로 오류가 발생합니다.

구문 문제에

한 쉽게 수정은 다음과 같습니다 그러나

[Unposted Charges] = (select SUM(trans_amt) from TRANS_HIST where SOURCE_CDE = '@C' AND SUBSID_CDE = 'AR') 

, 당신은 아마 의도 :

[Unposted Charges] = (select SUM(th.trans_amt) 
         from TRANS_HIST th 
         where th.SOURCE_CDE = '@C' AND 
          th.SUBSID_CDE = 'AR' AND 
          th.ID_NUM = ar.ID_NUM 
        ) 
+0

Ahhhhhh, 정말 고마워요! 매일 새로운 것을 배웁니다. –

+0

Gordon은 항상 SQL의 경우에 나타납니다. (y) – toha

0

는 부속 선택에 대한 좋은 대안이

의 파생 테이블에 가입하는 것입니다

... INNER JOIN (SELECT TH.ID_NUM, SUM(TH.TRANS_AMT) AS UNPOSTED_CHARGES FROM TRANS_HIST TH WHERE TH.SOURCE_ID = '@C' AND TH.SUBSID_CDE = 'AR' GROUP BY TH.ID_NUM) DT ON DT.ID_NUM = AR.ID_NUM ...

그러면 0을 사용할 수 있습니다.을 선택 목록에 추가하십시오.

관련 문제