0
SQL Server 2000に複雑なクエリが書き込まれており、一部に派生テーブルへの結合が含まれています。この表は残念ながら私が望んでいたデータが予期したものと異なるので、私が望むやり方を正確に返していません。データは次のようにしていると言う:集約グループの列情報を見つける方法
USERID,OS,DATEINSTALLED
237,win,01/01/1980
237,dos,01/02/1978
237,lin,08/08/2002
132,win,03/03/1982
132,dos,03/07/2002
132,mac,03/07/2002
その後、私のクエリはように見えた:
237,08/08/2002
132,03/07/2002
の結果セットを与えるしかし、私が必要とすることは、結果セットであるだろう
SELECT USERID, DATEINSTALLED = max(DATEINSTALLED)
FROM INSTALLATIONS
GROUP BY USERID
をof:
237,lin,08/08/2002
132,dos,03/07/2002
または
237,lin,08/08/2002
132,mac,03/07/2002
私はそれがMacやDOSをピックアップしても大したことではありませんが、3行を与えてはいけません。私が必要とするのはuserid
ごとに1行であり、最大の日付とその組み合わせの有効なOS「a」です。したがって、MacまたはDOSは有効ですが、勝利は(ユーザー132のために)ありません。
より複雑なクエリの一部としての派生テーブルであるため、実行時間(ソーステーブルのサイズは数十万行)のため、できるだけクリーンでシンプルに保つ必要があります。私はこのお試しくださいSQL Serverの2000
を、派生テーブルは、派生テーブルが必要になります。私はこれを、次の1時間か2時にうまくいけば行きます。 – Paul
返信いただきありがとうございますが動作しません。あなたの答えは正しいと確信しています。私の質問は、私が実際に尋ねようとしていたものであること、つまり、2つの基準に合致する有効なOSを持つユーザIDと日付ごとに1行が必要なことを更新しました。 – Paul
最後にソートされましたが、実際のクエリはこの時点で私に頭痛を与えています。私がしたことはあなたの答えに似ていますが、 "OS"を "OS = MAX(OS)"に置き換えています。基本的に私が持っていた元の論理を入れ子にして繰り返します。 – Paul