• ベストアンサー

SQL 年だけ抽出

お世話になっております。 素人質問で申し訳ありませんが、お助けください。 「テーブル内容」に対してSQLを実行すると、「実行結果」のように結果を求めることができるSQLを教えてください。 ■テーブル内容 2007/1/1 2007/12/3 2008/4/4 2008/5/5 2009/6/6 2009/11/11 ■実行結果 2007 2008 2009

  • Oracle
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • reset_cat
  • ベストアンサー率68% (94/138)
回答No.2

テーブル名:tab、列名:colと仮定して・・・ select distinct to_char(col, 'yyyy') from tab; か、 select distinct substar(col, 0, 4) from tab; とかかな? #1さんも指摘してますが、SQLの書き方ならネットでたくさん引っかかるかと思いますので、一度ご自分でも検索されたほうがよいと思います。

gokuririn
質問者

お礼

実際のSQL文を記載していただきまして、大変ありがとうございます。 一応調べたのですが、なかなか・・・。 あなたのような方がいらっしゃると、道に迷った素人もビクビクしながら質問しないですみます。 ただ、これに甘えないようにしたいと思っています。 ありがとうございました。

その他の回答 (1)

  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.1

そのテーブル内容で示されている、日付に関するデータの列属性は? 日付型なら、TO_CHAR(列名, 日付書式)で必要な部分を切り出せば良いのでは? 文字列型なら、SUBSTR(列名, 開始位置、文字数)で良いのでは? このようなどんな時にどんな関数が使えるのか?に関してはネット上に有益なサイトがあります。 一度検索してみてください。

gokuririn
質問者

お礼

回答ありがとうございます。 ご迷惑をおかけしました。

関連するQ&A

  • SQLの書き方について

    すみません、SQL初心者なので変な質問かもしれませんが、、SQLの書き方がわからないので教えてください。以下のような二つのテーブルがあるとします。 (Table: EMP2014) EMPNO | EMPNAME | TEL 100 | TARO | 03-1111-2222 101 | HANAKO | 03-2222-3333 (Table: EMP2015) EMPNO | EMPNAME | TEL 200 | JIRO | 03-3333-4444 201 | KYOKO | 03-4444-5555 このテーブルからSQLを実行して、以下のような結果を得たいです。 EMPNO | EMPNAME | TEL 100 | TARO | 03-1111-2222 101 | HANAKO | 03-2222-3333 200 | JIRO | 03-3333-4444 201 | KYOKO | 03-4444-5555 JOINというのは二つのテーブルを左右に並べた形での結合だと思うんですけれど、僕がやりたいのは内容の似たテーブル(上記の場合全く同じカラム)を上下に単純にくっつけて一つの出力結果にしたいです。ビューなどをつくって仮想的に一つの表にできるものなのでしょうか? とても簡単なのかも知れませんが、、宜しくお願いします。

  • SQLで取得したフィールドをSQL文として利用

    お世話になっております。 MYSQLで sql_id (int PK) sql_data (text) のようなテーブル(sql_db)を持ち select sql_id from where (sql_data をsqlとして実行した結果 ) > 200 のように、フィールドから取得した値をSQLとして実行したりする方法はございますでしょうか。 ご教授よろしくお願いいたします。

  • 簡単なSQLに関して

    初歩的なSQLの質問で申し訳ありません。 教えて下さい。 下記のような、ある2つの異なる名前の同項目のテーブルが存在します。 《テーブル》 Aテーブル   社員番号、日付、内容 Bテーブル  社員番号、日付、内容  ※ 内容に関しては、AテーブルとBテーブルで全く違います。 これらの2つのテーブルをマージさせ、社員番号毎の内容毎、日付順に したいと考えています。 どのようなSQLを書けば良いでしょうか?? 尚、テーブルに関しては、諸事情であえて2つに分けてあります。 よろしくお願いします。

  • バッチでSQLを実行するにはどうすれば?

    いつもお世話になっております。 質問なのですが、あるSQLを夜間にバッチで処理し、その結果をCSV形式で保存したいのですが、どのようにすればよろしいでしょうか。 画面上でテーブルのカラムに対象のSQLをインサート、夜中にSQLが入っているカラムを取得し、更にそのSQLを実行してCSV形式でデータを保管したいのです。 シェルスクリプト(kshかbash?)で実行したいと考えております。よろしくお願いします。

  • SQLでの抽出条件

    SQL初心者です。初歩的な質問だと思いますが、ご教授願います。 以下のような2つのテーブルがあります。 【テーブルA】 グループ 社員番号 A 1 A 2 A 3 B 4 B 5 B 6 C 7 C 8 D 9 D 1 【テーブルB】 社員番号 1 9 テーブルBの社員番号と一致する場合、テーブルAをグループ単位で抽出しないようにしたいです。  ・グループAは社員番号1が一致するため抽出しない。  ・グループDは社員番号1と9が一致するため抽出しない。 【取得結果】 グループ 社員番号 B 4 B 5 B 6 C 7 C 8 説明が分かりづらくて申し訳ありませんが、よろしくお願い致します。

  • SQLサーバー2000でのSQL文の質問です。

    開発環境はSQLサーバー2000です。 下記のような親子関係のテーブルがあった場合に、【結果】のような結果を得れるようなSQL文を教えていただきたいです。 【親】 -------------------------------- |品番 |品名 -------------------------------- |1 |ラーメン -------------------------------- |2 |カレー -------------------------------- |3 |うどん -------------------------------- 【子供】 -------------------------------- |品番 |枝番 |食べた日 -------------------------------- |1 |1 |1/1 -------------------------------- |1 |2 |1/2 -------------------------------- |3 |1 |1/3 -------------------------------- |3 |2 |1/4 -------------------------------- |3 |3 |1/5 -------------------------------- |3 |4 |1/6 -------------------------------- 【結果】 親子テーブルを連結したSQLを実行すると -------------------------------- |品番 |品名 |食べた回数 -------------------------------- |1 |ラーメン|2 -------------------------------- |2 |カレー |0 -------------------------------- |3 |うどん |4 -------------------------------- のような結果が帰ってくるSQLが作成可能でしたらご教授いただけますようよろしくお願い致します。

  • これを抽出するSQLを教えてください

    どういうSQLを書けばこれが実現出来るのか分からないので教えて下さい。 テーブル名 f_table というテーブルがあります。 このテーブルには、f_id,u_id,day(日付)という三つの列があり、下記のようにデータが入っているとします。 f_id  u_id    day   1    1   2007/3/8 2    2   2008/1/2 3    2   2008/1/10 4    1   2007/2/12 このf_tableから、各u_idで一番日付の新しいf_idを抽出する(この表の場合f_idの1と3が抽出される)にはどういうSQLで出来るのでしょうか? ※実際の表ではu_idに入っている数字の種類は1と2だけではなく、もっと沢山あります。 ご回答よろしくお願いします。

  • SQL初心者です。

    SQL初心者です。 SQLPlusをコマンドプロンプトで実行していたのですが、定型のSQL文のためバッチファイルにてスケジュール実行したいと考えています。 コマンドプロンプトを開いて実行していたときはspoolした内容に実行sqlも出力されていたのですが、バッチファイルで同じようにspoolすると実行sqlは出力されず結果のみになってしまいます。 実行したsqlも出力させるには特別にsetするものがあったりするのでしょうか? echoのon、offは試しましたが結果は同じでした。 方法をご教示いただけたら助かります。 よろしくお願いします。

  • SQL2000からSQL2005へのレプリケーション

    日々更新されるSQL2000(サーバー2000)上のテーブルA、テーブルB、テーブルCをSQL2005(サーバー2005)上で参照するために、レプリケーションの機能を使って、SQL2000をパブリッシュとしてSQL2005上をサブスクライバとしてプルサブスクリプション(スケジュール実行)でSQL2005上にテーブルA、テーブルB、テーブルCを生成させたいと考えております。 SQL2000側でパブリッシュの設定、2005側からプルサブスクリプションの設定ともに問題無く設定できたのですが、いざ実施すると 下記のエラーが出て実行できませんでした。 お聞きしたい点としてはそもそも上記の方法でのSQL2000から2005へ テーブルコピーが可能なのか? 無理な場合は、他にどの様な方法でスケジュールで任意のテーブルを 2000から2005へコピーするあるか教えていただけますでしょうか? ------------ ユーザー 'HOGEDOMAIN\サーバー2000$' はログインできませんでした。 (ソース: MSSQLServer, エラー番号: 18456) ヘルプの表示: http://help/18456

  • PL/SQLの戻り値について

    現在正規化されていないテーブルを、PL/SQLを使って集計したいと考えています。以下のような構造にしたいと思うのですが、可能でしょうか? 1.正規化されていないテーブルのデータを正規化されたテーブル(テンポラリーテーブル)へ転記 2.テンポラリーテーブルテーブルのデータを集計(GROUP BYなどで) 3.2の結果を戻す 上記1~3までをすべてPL/SQLで実行し、その結果を取得したいです。 なお取得する結果としては、  キー,集計値1,集計値2    ・    ・    ・ というような構造で、複数レコードあります。 つまり、通常のSELECT文で返ってくる値を、PL/SQLで戻したいと考えています。