SQL Serverにログテーブルがあります。テーブルは次のように構成されています。USERが見つかった場合は最後の行を選択
Unique ProblemID ResponsibleID AssignedToID ProblemCode
155 155 0282 4
156 155 0900
157 155 3
158 155 0147 1
159 159 0111 2
160 159 0333 4
161 159 0900 1
基本的に私たちはすべての問題を記録し、誰が責任を負い、問題に対処しなければなりませんでした。 私は一人が関与している問題を見つけるでしょうクエリ必要があります。たとえば
を:
- ID 0900の人がID 0282を持つ人が関与していた
- 155と159の両方に関与していました155でのみ。
- ID 0333の人物は159人だけに関係していました。
また、私はProblemCodeによってProblemIDの最後の行をフィルタリングする必要があることを忘れていました。たとえば、人が関わっている問題IDを見つけてください。その問題の最後のログ行にProblemCodeが1(問題が現在クローズしていることを意味します)です。
はさらに、私は、クエリで働いていた:
select ProblemID, EntryTime, ResponsibleID, ProblemCode, AssignedToID
from (select ProblemID, EntryTime, ResponsibleID, ProblemCode, AssignedToID,
row_number() over(partition by ProblemID order by EntryTime desc) as rn
from myTable) as T
where rn = 1 and ResponsibleID = '00282' OR AssignedToID = '00282'
and veiksmoid <> 4
しかし、それだけで、最後の行と一致します。
? – rahularyansharma
単純なWHERE句が必要です。あなたはすでに何をしようとしましたか? –
これらの単純なクエリは、あまりにも多くの行を返します。私は一意のProblemIDだけを必要とします。 – GEMI