Date: Fri, 22 Jul 2005 14:49:06 +0900
From: "Kohichiroh Ohta" <who@example.co.jp>
いつもお世話になっております。
また、初歩的な質問で申し訳ありません。
SQL文の記述でいつももどかしく
思っているものがあります。
例えばここに「売上」というテーブルが
あったとします。デザインは
---- 売上 ----
売上ID int not NULL IDENTITY
得意先ID int
日付 datetime
商品コード int
数量 int
単価 money
かなり省略していますがこのような感じです。
ここで、各得意先IDの商品コード=10の最新の売上を
1行だけ抽出したいという場合
どのようなSQLを書けばよいですか?
例えば
SELECT 売上.*
FROM 売上
INNER JOIN (
SELECT
得意先ID
MAX(売上ID) AS 売上ID
FROM 売上
WHERE 商品コード = 10
GROUP BY 得意先ID
)AS URI
ON 売上.売上ID = URI.売上ID
このように記述しましたが
これは[売上ID]が一番大きい値の行を
最新の売上とみなしています
もっとも新しい日付の1行を抽出ということになると
このような書き方では抽出できないと思います。
古い日付のものを後で入力する場合もあるからです。
各得意先IDの商品コード=10の日付が最も新しい
売上を1行抽出したい場合
どのように記述すればよいですか?
同じ得意先IDで同じ日付で同じ商品コードの
行が複数ある場合もあります。
その場合は売上IDが最も大きい値のものを
抽出したいのですが
良い記述の仕方があれば、教えてください。
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|