直接的な回答ではないですが、複雑なクエリの際に問題箇所を見つけるコツ(私の方法)を記載します。
以下のSQL文で、最初のselectから別名のa手前の ) までを選択するとデータが取れてくるのですが
上のように質問者様が記載している通りに
SQLを各クエリごとに確認していくとよいです。
例えば初めは、aとエイリアスを付けている箇所が正しく動作するか確認します。
この時、*で取得します。
SQL1
1select *
2from
3(select 年月
4 ,科目
5 ,sum(借方金額) 借方金額
6 ,sum(貸方金額) 貸方金額
7 ,sum(借方金額)-sum(貸方金額) 残高1
8 ,sum(貸方金額)-sum(借方金額) 残高2
9from 明細残高
10group by 年月,科目
11) a
上記がうまくいくなら、今度はbテーブルを結合してみます。
SQL2
1select *
2from
3(select 年月
4 ,科目
5 ,sum(借方金額) 借方金額
6 ,sum(貸方金額) 貸方金額
7 ,sum(借方金額)-sum(貸方金額) 残高1
8 ,sum(貸方金額)-sum(借方金額) 残高2
9from 明細残高
10group by 年月,科目
11) a
12// ↓ここがおかしい
13join 科目 b
14on a.科目 = b.科目;
15// ↑ここがおかしい
エラーになる場合はコメントの内側がおかしい可能性が高いです。
上記がうまくいくなら、今度は*で取得している箇所を1カラムずつ取得してみます。
SQL3~
1 // ↓1カラムずつ追加・実行して、おかしい箇所を特定
2select a.年月
3 ,a.科目
4 ,b.科目名
5 ,借方金額
6 ,貸方金額
7 ,(case
8 when 科目 like '0%' then 残高1
9 when 科目 like '1%' then 残高2
10 else '0'
11 end) 残高
12 // ↑1カラムずつ追加・実行して、おかしい箇所を特定
13from
14(select 年月
15 ,科目
16 ,sum(借方金額) 借方金額
17 ,sum(貸方金額) 貸方金額
18 ,sum(借方金額)-sum(貸方金額) 残高1
19 ,sum(貸方金額)-sum(借方金額) 残高2
20from 明細残高
21group by 年月,科目
22) a
23join 科目 b
24on a.科目 = b.科目;
慣れてくればこのくらいはすぐ気づいたりしますが、
ネストが深いSQL等で特定しにくい際に役に立ちます。
SQLに慣れていない方にもおすすめの方法です。
ご参考までに。