teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

修正

2017/02/26 14:46

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -53,7 +53,7 @@
53
53
  |2016|2|D商品|5000|10000|
54
54
 
55
55
 
56
- 欲しい結果自体が非正規形のため、まだカラム名を年度ごとに指定する必要がありますが、これでだいぶまともなSQLになります。SQLはカラム名を動的に決定することはできません。CASE式と集約関数の利用がポイントです。
56
+ 欲しい結果自体が非正規形のため、まだ条件やカラム名を年度ごとに指定する必要がありますが、これでだいぶまともなSQLになります。CASE式と集約関数の利用がポイントです。
57
57
 
58
58
 
59
59
  ```SQL

3

誤字修正

2017/02/26 14:46

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -1,4 +1,4 @@
1
- 元のテーブルを前提にすると、おそらくこんな感じのSQLにするしかないです(未検証なので文法エラーがあるかも)。店テーブルはデータが欲しい結果に含まれていないため使用していません。
1
+ 元のテーブルを前提にすると、おそらくこんな感じのSQLにするしかないです(未検証なので間違ってるかもしれないけど)。店テーブルはデータが欲しい結果に含まれていないため使用していません。
2
2
 
3
3
 
4
4
  ```SQL

2

誤字修正

2017/02/26 14:23

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -53,7 +53,7 @@
53
53
  |2016|2|D商品|5000|10000|
54
54
 
55
55
 
56
- 欲しい結果自体が非正規形のため、まだカラム名をハードコードする必要がありますが、これでだいぶまともなSQLになります。SQLはカラム名を動的に決定することはできません。CASE式と集約関数の利用がポイントです。
56
+ 欲しい結果自体が非正規形のため、まだカラム名を年度ごとに指定する必要がありますが、これでだいぶまともなSQLになります。SQLはカラム名を動的に決定することはできません。CASE式と集約関数の利用がポイントです。
57
57
 
58
58
 
59
59
  ```SQL

1

誤字修正

2017/02/26 14:13

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -39,7 +39,7 @@
39
39
  店コード = 1
40
40
  ```
41
41
 
42
- 複雑なうえ、これでは年度や商品が変わる度にSQLを見直す必要がありメンテナンス性が非常に悪いです。テーブル事態も毎年カラムの追加が必要でしょう。問題はテーブルが正規化されていないことです。可能であれば売上テーブルを以下のように変更してください。
42
+ 複雑なうえ、これでは年度や商品が変わる度にSQLを見直す必要がありメンテナンス性が非常に悪いです。テーブル自体も毎年カラムの追加が必要でしょう。問題はテーブルが正規化されていないことです。可能であれば売上テーブルを以下のように変更してください。
43
43
 
44
44
  |年度|店コード|商品|売上高|回収高|
45
45
  |--:|--:|--:|--:|--:|