質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Q&A

解決済

1回答

1986閲覧

SQLiteで○ヶ月前の列を取得したいです

wieee

総合スコア11

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

0グッド

0クリップ

投稿2018/04/13 04:00

前提・実現したいこと

SQLiteで、次のような2つのテーブルがあるとします。


tb_Item

idnamedate
0apple2018-02-15
1apple2018-03-20
2apple2018-04-02
3orange2018-02-12
4orange2018-03-05
5orange2018-04-07

tb_Month

idnamemonth
0apple1
1orange2

tb_Itemには、商品名と日付が入力されています。
tb_Monthには、商品名と○ヶ月を表すmonth列があります。appleは1ヶ月、orangeは2ヶ月です。
このtb_Monthに記載されている○ヶ月の数値を使って、

tb_Itemからdateの○ヶ月前の商品をSELECTする

ということをやりたいです。

試したこと

例えば、単純に2ヶ月前から本日4/13までの商品の個数を取得するには以下になります。

SQL

1SELECT COUNT(name) FROM tb_Item WHERE date >= DATE('2018-04-13', '-2 months');

これをtb_Monthを使って商品ごとに○ヶ月前の個数を取得するにはどのようにクエリを基準すれば良いのでしょうか?

どうぞよろしくお願い致します!

環境:SQLite3.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

tb_Itemtb_Monthnameで結合してmonthを参照すれば良さそうですけど。

SQL

1SELECT COUNT(itm.name) 2FROM tb_Item itm inner join tb_Month mnth on itm.name=mnth.name 3WHERE date >= DATE('2018-04-13', mnt.month || ' months');

投稿2018/04/13 04:42

編集2018/04/13 04:43
sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wieee

2018/05/23 00:48

遅くなりましたがありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問