• ベストアンサー

当年度の商品別の棚卸し状況を表示したい。

商品テーブル  商品コード  商品名 棚卸履歴テーブル  商品コード  棚卸日 棚卸履歴テーブルより当年データのみを抽出したテーブルと商品テーブルとを突き合わせを行う。  (1)棚卸テーブルよりいつ実施しても当年の4月1日以降を抽出する記述方法がわかりません。  (2)多段クエリの記述方法がわかりません。 上記テーブルを例をもとに記述方法を教えて頂けないでしょうか? 宜しくお願いします。

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

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.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'; を試してください。

maruo794
質問者

お礼

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

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

>(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' ); ではだめですか