- ベストアンサー
当年度の商品別の棚卸し状況を表示したい。
商品テーブル 商品コード 商品名 棚卸履歴テーブル 商品コード 棚卸日 棚卸履歴テーブルより当年データのみを抽出したテーブルと商品テーブルとを突き合わせを行う。 (1)棚卸テーブルよりいつ実施しても当年の4月1日以降を抽出する記述方法がわかりません。 (2)多段クエリの記述方法がわかりません。 上記テーブルを例をもとに記述方法を教えて頂けないでしょうか? 宜しくお願いします。
- みんなの回答 (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'; を試してください。
その他の回答 (1)
- nora1962
- ベストアンサー率60% (431/717)
>(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' ); ではだめですか
お礼
回答ありがとうございました。 no1の回答とno2の回答を組み合わてクエリーを作成すれば、私の求めていた実行結果を得られました。 完璧な回答でした。心から感謝致します。 お礼が遅くなり失礼致しました。