コードのままだと項目がA、B・・・になってます(多分ChrWの兼ね合いですね)。
それを元データのフィールド名の”期首在庫” ”仕入高” 等にするにはどうすればいいでしょうか?
方法としては大きく2つあります
【 1 】
t_num テーブルに従属列を作り、2列構成にします
CREATE TABLE t_num (
num INT PRIMARY KEY
, 科目 VARCHAR(100)
);
num | 科目 |
---|---|
1 | 期首在庫 |
2 | 仕入高 |
3 | 当期仕入 |
4 | 期末在庫 |
5 | 売上原価 |
6 | 製品売上高 |
7 | 賃収入 |
8 | 収入計 |
9 | 売上総利益 |
10 | 販管費 |
11 | 営業利益 |
12 | 営業外収益 |
13 | 営業外費用 |
14 | 経常利益 |
15 | 特別損失 |
16 | 税引前当期純利益 |
17 | 法人税等 |
18 | 当期純利益 |
SQL文では ChrW関数の使用箇所を
- SELECT ChrW(64 + x.num) As 項目
+ SELECT x.科目 As 項目
とテーブルの従属列への参照に置き換えるのが王道と言えるでしょう
個々のデータをテーブルというオブジェクトを使って「可視化」できるメリットが大きいため
私としては、こちらの方法をお薦めします
【 2 】
t_num テーブルは1列構成のままにしておき、SQL文中に文字リテラルを直に埋め込んでもいいでしょう
( お薦めはしませんが )
- SELECT ChrW(64 + x.num) As 項目
+ SELECT Choose(
+ x.num
+ , '期首在庫'
+ , '仕入高'
+ , '当期仕入'
+ , '売上原価'
+ , '製品売上高'
+ , '賃収入'
+ , '収入計'
+ , '売上総利益'
+ , '賃収入'
+ , '収入計'
+ , '売上総利益'
+ , '販管費'
+ , '営業利益'
+ , '営業外収益'
+ , '営業外費用'
+ , '経常利益'
+ , '特別損失'
+ , '税引前当期純利益'
+ , '法人税等'
+ , '当期純利益'
+ ) As 項目
それと各金額を通貨型にするにはどうしたらいいでしょうか?(現在は文字列型になっているので)
【 1 】の方法で実装したSQL
SELECT x.科目 As 項目
, Choose(
x.num
, CCur( y.期首在庫 )
, CCur( y.仕入高 )
, CCur( y.当期仕入 )
, CCur( y.期末在庫 )
, CCur( y.売上原価 )
, CCur( y.製品売上高 )
, CCur( y.家賃収入 )
, CCur( y.収入計 )
, CCur( y.売上総利益 )
, CCur( y.販管費 )
, CCur( y.営業利益 )
, CCur( y.営業外収益 )
, CCur( y.営業外費用 )
, CCur( y.経常利益 )
, CCur( y.特別損失 )
, CCur( y.税引前当期純利益 )
, CCur( y.法人税等 )
, CCur( y.当期純利益 )
) As 金額
, x.num As 順番
FROM t_num x
, Q試算表用Base10_損益各利益 y
ORDER BY 3
;
【 2 】の方法で実装したSQL
SELECT Choose(
x.num
, '期首在庫'
, '仕入高'
, '当期仕入'
, '売上原価'
, '製品売上高'
, '賃収入'
, '収入計'
, '売上総利益'
, '賃収入'
, '収入計'
, '売上総利益'
, '販管費'
, '営業利益'
, '営業外収益'
, '営業外費用'
, '経常利益'
, '特別損失'
, '税引前当期純利益'
, '法人税等'
, '当期純利益'
) As 項目
, Choose(
x.num
, CCur( y.期首在庫 )
, CCur( y.仕入高 )
, CCur( y.当期仕入 )
, CCur( y.期末在庫 )
, CCur( y.売上原価 )
, CCur( y.製品売上高 )
, CCur( y.家賃収入 )
, CCur( y.収入計 )
, CCur( y.売上総利益 )
, CCur( y.販管費 )
, CCur( y.営業利益 )
, CCur( y.営業外収益 )
, CCur( y.営業外費用 )
, CCur( y.経常利益 )
, CCur( y.特別損失 )
, CCur( y.税引前当期純利益 )
, CCur( y.法人税等 )
, CCur( y.当期純利益 )
) As 金額
, x.num As 順番
FROM t_num x
, Q試算表用Base10_損益各利益 y
ORDER BY 3
;
通報 ...