年月が連続したテーブルとそうでないテーブルの連結
- ORACLE & SQL初心者のため、年月が連続したテーブルと特定の年月のみを含むテーブルの結合方法を教えてください。
- テーブルAとテーブルBの結合によって、年月が連続したデータと特定の年月のみを含むデータを統合することができます。
- SQLを使用して、年月が連続したテーブルとそうでないテーブルを結合する方法について教えてください。
- ベストアンサー
年月が連続したテーブルとそうでないテーブルの連結
ORACLE & SQL初心者です。 うまい日本語がみつからないのですが、 テーブルAは年月が月ごとに入っていて、 テーブルBには特定の年月しか入っていない状態だとします。 以下のような状況のときに、SQLではどのような表現を 用いるのが正しいのでしょうか?それとも条件?がたりないのでしょうか? 【テーブルA】 +----------+------------+ | 年月 | 店名 | +----------+------------+ | 200901 | 八百八 | +----------+------------+ | 200902 | 八百八 | +----------+------------+ | 200903 | 八百八 | +----------+------------+ | 200904 | 八百八本店| +----------+------------+ | 200905 | 八百八本店| +----------+------------+ | 200906 | 八百八本店| +----------+------------+ | 200907 | 八百八本店| +----------+------------+ 【テーブルB】 +----------+----------+--------+ | 年月 | 品名 | 個数 | +----------+----------+--------+ | 200901 | みかん | 6 | +----------+----------+--------+ | 200905 | みかん | 3 | +----------+----------+--------+ 【結合後】 +----------+------------+----------+--------+ | 年月 | 店名 | 品名 | 個数 | +----------+------------+----------+--------+ | 200901 | 八百八 | みかん | 6 | +----------+------------+----------+--------+ | 200902 | 八百八 | みかん | 6 | +----------+------------+----------+--------+ | 200903 | 八百八 | みかん | 6 | +----------+------------+----------+--------+ | 200904 | 八百八本店| みかん | 6 | +----------+------------+----------+--------+ | 200905 | 八百八本店| みかん | 3 | +----------+------------+----------+--------+ | 200906 | 八百八本店| みかん | 3 | +----------+------------+----------+--------+ | 200907 | 八百八本店| みかん | 3 | +----------+------------+----------+--------+ ・・よろしくお願いいたします。
- kerosin454
- お礼率75% (3/4)
- Oracle
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
分析関数は使えるなら、こんな感じで。 select 年月,店名,品名,個数 from TBLA a, (select 年月 開始年月,lead(年月,1,999999) over(order by 年月) 改定年月,品名,個数 from TBLB) b where a.年月>=b.開始年月(+) and a.年月<b.改定年月(+);
関連するQ&A
- access テーブル結合の逆?
Access2003 お世話になります。SQLで以下のようなデータを取得する場合、上手い方法はあるのでしょうか。なんだかとても簡単な事のような気がするのですが…… テーブルA: ---品名--- りんご みかん もも いちご テーブルB: ---品名--- りんご もも このテーブルBに入力されているレコードをテーブルAから"除外"して、結果として「みかん」と「いちご」だけが欲しいのです。 テーブルBのレコードが少なければ、直接 品名<>"りんご" とか書いてもいいのかもしれませんが、結合のようなSQLで一発でできてしまったりしないでしょうか。 access上で可能なスマートな方法があれば教えていただきたいです。 よろしくお願いいたします。
- ベストアンサー
- その他(データベース)
- レコードを指定項目の数値分取得する
OracleのSQL文について質問させて頂きます。 以下のようなテーブルが存在するとします。 ID 品名 個数 001 みかん 1 002 りんご 2 003 ぶどう 2 このテーブルから、以下のような結果を取得したいのです。 ID 品名 個数 001 みかん 1 002 りんご 2 002 りんご 2 003 ぶどう 2 003 ぶどう 2 個数の数だけレコードを返す形です。 どういうSQLを組めばよいのか、わかりません。 お手数ですが、どなたかわかる方いらっしゃいましたら ご回答頂けますと幸いです。よろしくお願い致します。
- ベストアンサー
- Oracle
- ピボットテーブル 0個の行を非表示にしたい
こんばんは。エクセル2003のピボットテーブルについてお伺いします。 A1=品名 B1=個数 A2=みかん B2=2 A3=みかん B3=1 A4=りんご B4=1 A5=バナナ B5=0 上記のデータをソースとして 行のフィールドに品名を、 「データのアイテムをドラッグします」に個数をドラッグして ピボットテーブルを作成した時に 個数が0の品名は表示させたくないのですが どうすればいいのでしょうか? 0のセルにカーソルを当て右クリックで「表示しない」を選択lしても 「現在選択されている範囲を隠す事はできません」とメッセージが出てしまいますし これはサンプルであり、実際のデータは数百個の0の行を非表示にしたいので 関数などを使って一気にできる方法を知りたいです。 アドバイスよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 2つのテーブルの項目の和が求まりません。
以下のA、Bを結合して期待する結果を得たいのですが、 4時間、試行錯誤してもできませんでした(><) 制約条件:サブクエリーの有無は問いません。 ■テーブルA a b ---- 1 2 2 1 ■テーブルB a b ---- 1 1 3 7 ■期待する結果 a cnt ---- 1 3 2 1 3 7 aはキーですがAのみ、Bのみ、両方に存在することがあるので、 簡単そうでかなり難しいようです。。 うぅ。。オラクルのSQL入門をなくしてしまったのが痛いです。 難しいSQLがさっと書けるようになるお勧めなSQL本ありましたら 教えてほしいです。よろしくお願いします。
- ベストアンサー
- MySQL
- エクセルでデータ並び替え→別シートへ
品名 蜜柑 林檎 林檎 サイズ 大 小 中 店名 計 A店 4 2 2 B店 6 3 3 というテキストがSeet1にあったとしてSeet2へ 店名 品名 サイズ 個数 A店 蜜柑 大 2 A店 林檎 中 2 B店 林檎 小 3 B店 林檎 中 3 と並び替えるにはどうしたら良いのでしょうか?
- ベストアンサー
- オフィス系ソフト
- 固定値を含む結合と複数テーブルの結合について
「1.固定値を含む結合」と「2.複数テーブルの結合」について教えて下さい。 最近oracleを使い始めてSQLで表の結合を書く場面があるんですが LEFT(RIGHT) JOIN を使うのか、(+)を使って書くのかで迷っています。 LEFT(RIGHT) JOINだと固定値を含めて外部結合しようとするとエラーになってしまいます。 それが嫌で(+)を使っていたんですが 今度は複数のテーブルを(+)で結合しようとするとエラーになってしまいます。 (AテーブルとBテーブル、AテーブルとCテーブルなど?) こういう場合はどうすれば良いのでしょうか? とりあえず副参照をFROMに指定して対処してるんですが 何かきちんとした書き方があるのでしょうか?誰か教えて下さい。
- ベストアンサー
- Oracle
- Oracle10gで1つのSQLで複数回同じテーブルを結合する場合のパ
Oracle10gで1つのSQLで複数回同じテーブルを結合する場合のパフォーマンス向上 Oracleで1つのSQL内で同じテーブルを2回以上結合すると結果出力にかかる時間が非常に遅くなります。 例: SELECT * FROM A, B b1, B b2 WHERE a.id = b1.id AND a.id = b2.id (テーブルBを2回結合している) こういう場合にパフォーマンスを落とさない方法はありますか?テンポラリテーブルでテーブルBのレプリカを作成して使用するというのはなしです。あくまで1つのSQLで結果出力できることを前提にパフォーマンスを向上する方法を教えてください。
- ベストアンサー
- Oracle
- 複数テーブルを結合するには?
OS:WINDOWSXP SP2 ORACLE:Oracle9i Enterprise Edition Release 9.2.0.1.0 A, B, Cというテーブルがあるとします。 それぞれのテーブルには XXカラムと YYカラムがあるとします。 2つのテーブルを結合させるには、以下のSQL文を記述すれば良いと考えています。 SELECT A.*,B.* FROM A JOIN B ON A.XX = B.XX 3つのテーブルを結合するには、以下のSQL文を記述しています。 SELECT A.*,B.*,C.* FROM A JOIN B ON A.XX = B.XX JOIN C ON A.XX = C.XX 但し、この記述方法でいきますと、Cテーブルを右側外部結合に指定した場合のみ、 ORA-00904 "C" 無効な識別子です。 というエラーメッセージが表示されます。 SELECT A.*,B.*,C.* FROM A JOIN B ON A.XX = B.XX RIGHT OUTER JOIN C (←LEFT OUTER、FULL OUTER)なら通ります) ON A.XX = C.XX 何故、右側外部結合のみ不正となるのか不明であり、解決策が見つかりません。 複数のテーブルを結合する為のSQL文の記述方法を教えて頂けますでしょうか?
- ベストアンサー
- Oracle
- テーブルを結合して新規にテーブルに・・・
アクセス2003でSQLを組んでデータベースを作っています。 まず、ユニオンクエリを使ってAクエリとBクエリを結合しました。 この結合したものを新規にテーブルを作成したいのですが、どうすれば良いでしょうか? 手順を教えて頂ければ幸いです。 よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- 他のDBのテーブルと内部結合が可能でしょうか
他のDBのテーブルと内部結合が可能でしょうか sql sever 2005 を使用します。このたび、データベースAのテーブルaを定期的に検索するsqlを作成することになりました。このsql文は、ストアードプロシージャとして登録予定です。 その際、テーブルbを内部結合で参照します。例として、テーブルaは社員番号があり、テーブルbは社員番号、社員名があります。(テーブルbは社員マスター) テーブルaを参照し、その社員名を内部結合(INNER JOIN)で取り出します。 ここで、テーブルa,bが共に、同じデータベース内にある場合は、問題ないのですが、 テーブルbは、別のマシンのsql sever 上にあります。(したがって、データベース名も異なります) このような状態で、内部結合による参照は可能でしょうか? また、内部結合ができないまでも、ストアードプロシージャで、データベースAのテーブルaを参照しながら、別のマシンのデータベースBのテーブルbを参照することは、原理的に可能でしょうか。 なお、データベースは共にsql server 2005を使用します。
- ベストアンサー
- SQL Server
お礼
k_o_r_o_c_h_a_n様 ありがとうございます!! ご指摘の方法でどうやらイメージ通りに なりそうな感じです。 分析関数についても確認させていただきます。 ありがとうございました!!