2016-09-07 8 views
0

個人の未転記トランザクションの合計を計算しようとしています。私はこれを行うにサブクエリを必要と考えているが、私はサブクエリを使用して個人の合計を検索する

エラーが発生する(メッセージ512、レベル16、状態1、行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

ああ、ありがとう!私は毎日何か新しいことを学びます。 –

+0

ゴードンさんは常に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あなたの選択リストに

関連する問題