重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

商品テーブル
 商品コード
 商品名

棚卸履歴テーブル
 商品コード
 棚卸日

棚卸履歴テーブルより当年データのみを抽出したテーブルと商品テーブルとを突き合わせを行う。

 (1)棚卸テーブルよりいつ実施しても当年の4月1日以降を抽出する記述方法がわかりません。


 (2)多段クエリの記述方法がわかりません。


上記テーブルを例をもとに記述方法を教えて頂けないでしょうか?
宜しくお願いします。

A 回答 (2件)

すみません、sqlserverでしたね、それでは



select * from 棚卸履歴テーブル where 棚卸日 >= convert(varchar(4),getdate(),121) + '-4-1';



select * from 棚卸履歴テーブル where 棚卸日 >= convert(varchar(4), case when month(getdate())<=3 then year(getdate()) - 1 else year(getdate()) end,121) + '-4-1';

を試してください。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
no1の回答とno2の回答を組み合わてクエリーを作成すれば、私の求めていた実行結果を得られました。
完璧な回答でした。心から感謝致します。
お礼が遅くなり失礼致しました。

お礼日時:2010/12/19 01:54

>(1)棚卸テーブルよりいつ実施しても当年の4月1日以降を抽出する記述方法がわかりません。



「当年」の意味が曖昧です。
例えば200/2/1の場合
2000/4/1からのデータを抽出するのか、1999/4/1からのデータを抽出するのかどちらでしょう。
前の場合は
select * from 棚卸履歴テーブル where 棚卸日 >= concat( year(current_date()), '-4-1' );
でいいでしょう。

後者だと、
select * from 棚卸履歴テーブル where 棚卸日 >= concat( case when month(current_date())<=3 then year(current_date()) - 1 else year(current_date()) end, '-4-1' );
でしょうか。

>(2)多段クエリの記述方法がわかりません。

これも「多段クエリ」の意味が分かりません。
単純にJOINするなら


SELECT 棚卸履歴テーブル.商品コード, 商品テーブル.商品名,棚卸履歴テーブル.棚卸日
FROM 棚卸履歴テーブル INNER JOIN 商品テーブル ON 棚卸履歴テーブル.商品コード = 商品テーブル.商品コード AND 棚卸履歴テーブル.棚卸日 >= concat( year(current_date()), '-4-1' );

ではだめですか
    • good
    • 0

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

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