( 続き )
次に、勘定科目コード、種別、金額 の抽出条件全てを満たす
レコードを表示するためのクエリを作ります。
( SQLの結果に Q_表示対象 という名前を付けて保存します )
SELECT y.種別
, x.勘定科目コード
, x.勘定科目
, x.[金額(資産)] As cost
, x.[金額(負債)] As revenue
FROM 貸借対照表 x
, T_条件 y
WHERE x.勘定科目コード Between y.コードfrom And y.コードto
AND y.種別 Between 0 And 1
AND Abs( x.[金額(資産)] ) > 0 ;
種別 | 勘定科目コード | 勘定科目 | cost | revenue |
---|---|---|---|---|
0 | 1001 | あ | 8100 | -8100 |
0 | 1891 | う | 1200 | -1200 |
0 | 1999 | え | 500000 | -500000 |
1 | 2000 | カ | -120000 | 120000 |
1 | 2888 | キ | 7000 | -7000 |
1 | 3001 | ち | -10000 | 10000 |
0 | 9002 | * | 3200 | -3200 |
0 | 9004 | ¥ | 15000 | -15000 |
■ 仕上げのSQL
SELECT Max( IIf( q.種別 = 0, q.勘定科目コード ) ) As ex1
, Max( IIf( q.種別 = 0, q.勘定科目 ) ) As ex2
, Max( IIf( q.種別 = 0, q.cost ) ) As 金額_資産
, Max( IIf( q.種別 = 1, q.勘定科目コード ) ) As 勘定科目コード
, Max( IIf( q.種別 = 1, q.勘定科目 ) ) As 勘定科目
, Max( IIf( q.種別 = 1, q.revenue ) ) As 金額_負債
FROM
(
SELECT x.種別
, x.勘定科目コード
, x.勘定科目
, x.cost
, x.revenue
, Count(1) As gnum
FROM Q_表示対象 x
, Q_表示対象 y
WHERE x.種別 = y.種別
AND x.勘定科目コード >= y.勘定科目コード
GROUP BY x.種別
, x.勘定科目コード
, x.勘定科目
, x.cost
, x.revenue
) q
GROUP BY gnum
ORDER BY gnum ;
■ 結果
ex1 | ex2 | 金額_資産 | 勘定科目コード | 勘定科目 | 金額_負債 |
---|---|---|---|---|---|
1001 | あ | 8100 | 2000 | カ | 120000 |
1891 | う | 1200 | 2888 | キ | -7000 |
1999 | え | 500000 | 3001 | ち | 10000 |
9002 | * | 3200 | |||
9004 | ¥ | 15000 |
通報 ...