アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

以下のようなテーブルがあります。
ID 年月    商品数 利用者数
1 2013年9月  10      5
2 2013年10月 15      3
3 2013年11月 20      10
4 2013年12月 13      5
 ・
 ・
 ・
12 2014年9月 10     3

このテーブルをクエリで以下のように表示したいところです。
       10月 11月 12月・ ・ ・ 9月 ←2014年の9月
商品数    15   20  13      10
利用者数   3   10   5      3

※右端を先月とし過去1年分を表示したい。

クエリで上記のように表現することは可能でしょうか。

ご教授の程、宜しくお願い致します。

A 回答 (3件)

利用者数 に対してフィールド名の別名宣言を省略しているのことに対する疑問でしょうか。



ユニオンクエリにした場合、フィールド数とデータ型があっていればフィールド名は異なっていも問題ないです。
最初のSELECT文のフィールド名が採用されます。

ですので、2番目は別名の宣言は省略しても問題ないのです。

SELECT "商品数" AS 項目, 年月, 商品数 AS 数量 FROM テーブル名
UNION ALL
SELECT "利用者数", 年月, 利用者数 FROM テーブル名;

これでもいいし、省略せずに丁寧に書けば、

SELECT "商品数" AS 項目, 年月, 商品数 AS 数量 FROM テーブル名
UNION ALL
SELECT "利用者数" AS 項目, 年月, 利用者数 AS 数量 FROM テーブル名;

となります。
最初のSQLは片方は別名宣言して、片方は省略したので紛らわしかったですね。

疑問に思ったことはこのようなことでしたしょうか。
    • good
    • 0
この回答へのお礼

hatena1989さま
ご回答ありがとうございます。

>ユニオンクエリにした場合、フィールド数とデータ型があっていればフィールド名は
>異なっていも問題ないです。
>最初のSELECT文のフィールド名が採用されます。
>ですので、2番目は別名の宣言は省略しても問題ないのです。

私の勉強不足ですね。。フィールド名も前者後者ともに同じ名前に合わせ
なければならないという認識でしたし、省略できることすら知りませんでした。

大変勉強になりました!ありがとうございます。

お礼日時:2014/10/17 13:32

ユニオンクエリを利用して、商品数と利用者数が縦に並ぶように変換します。



SELECT "商品数" AS 項目, 年月, 商品数 AS 数量 FROM テーブル名
UNION ALL
SELECT "利用者数" AS 項目, 年月, 利用者数 FROM テーブル名;

このクエリからクロス集計クエリを作成すればいいでしょう。
    • good
    • 0
この回答へのお礼

hatena1989様
ご回答ありがとうございます。
返信が遅くなり申し訳ございません。

教えて頂いた方法でうまくいけました。
うまくいきましたが、いまいちこのユニオンクエリを理解できずにいます。

商品数と利用者数でそれぞれ「項目」を新たに設け、商品数の方は
そこに"商品数"を、利用者数の方は"利用者数"を表示しているかと
思うのですが、利用者数側の数量はどうなってるのでしょうか。

商品数側で「数量」を表示してるので、利用者数側では指定する必要は
ない。。ということなのでしょうか。
ユニオンクエリでは、両方の表示する項目を同じように指定しなければ
ならないという認識なのですが。

この辺をご教授頂けると幸いです。
宜しくお願い致します。

お礼日時:2014/10/16 09:14

見出し(列名)の調整が必要だが、「クロス集計」2本作って


それを選択クエリで繋ぐと実現できそう
    • good
    • 0
この回答へのお礼

bin-chanさま
ご回答ありがとうございます。
その見出しの部分のやり方が分からずにいる状況です。

お礼日時:2014/10/02 18:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す