Microsoft Access 掲示板

同じ内容のフィールド列に別々の結果を表示したい&数値がゼロ0の列は非表示にしたい / 6

11 コメント
views
4 フォロー
6
mayu 2020/02/21 (金) 15:01:49 修正 a3615@61ad5

・1000番代と9002,9004,9005番代が左側、2000番代と3000番代が右側になるようにする。
この結果を出すためのSQLコマンドがうまくいきません

gnumの列を見ると並びがきれいに並ばなくなります。

左側に表示するコードと、右側に表示するコードに 規則性や共通点が無いですから

  AND x.勘定科目コード \ 1000 = y.勘定科目コード \ 1000

という区分けが、意味をなさなくなったのが原因です。

とはいえ、
SQL文の記述が、読みにくくて 見通しが悪い場合は
条件の分岐や、マジックナンバーの追記 といった手法を採用すると
記述がますます汚くなりますから
設計を見直したり工夫するのが、定番の解決方法になります。

■ 貸借対照表

勘定科目コード勘定科目金額(資産)金額(負債)
700X450-450
1000Z25000-25000
10018100-8100
102000
18911200-1200
1999500000-500000
2000-120000120000
28887000-7000
299900
300000
3001-1000010000
3002-1400014000
300300
8999A4000-4000
90005500-5500
9001450-450
90023200-3200
9003-80008000
900415000-15000
900500
9006-25002500
999954321-54321
 
だとして
まずは、条件を入力するためのテーブル T_条件 を作ります。
`sql
CREATE TABLE T_条件
(

      rid         AUTOINCREMENT  PRIMARY KEY
    , 種別        INT            NOT NULL
    , コードfrom  INT            NOT NULL
    , コードto    INT            NOT NULL
);


 
■ テーブルデータ

| rid | 種別 | コードfrom | コードto |
|-----|------|------------|----------|
| 1   | 0    | 1001       | 1999     |
| 2   | 0    | 9002       | 9002     |
| 3   | 0    | 9004       | 9005     |
| 4   | 1    | 2000       | 3001     |
| 5   | 2    | 4000       | 4999     |
| 6   | 3    | 5000       | 5999     |

通報 ...