Microsoft Access 掲示板

1行だけのクエリデータを縦並びにしたい / 9

14 コメント
views
9

コードのままだと項目が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
;
通報 ...