1

クライアントのレコードが 1 つだけ表示されるクエリを作成するのに苦労していますが、表示されるレコードは、そのクライアントのデータベースに追加された最後のレコードでなければなりません... MAX(date) を使用して最新の日付を取得できます. この理由は、各クライアントの 1 つのレコード (最後に追加されたレコード) がリストされる Gridview を構築しているためです。その後、履歴を表示するオプションがあります。同じクライアントの 2 番目の行は表示されません。

これは私のクエリです:

SELECT Client, Model, SerialNo, Dep, Level, Colour, Status 
FROM TonerRequest 
WHERE Status = 'Open' 

誰かがこれを行う方法を提案できますか? または、これを行う方法について読むことができる場所はありますか?

4

5 に答える 5

3

row_number()クライアントごとに最新の行を選択するために使用できます。

SELECT  *
FROM    (
        SELECT  ROW_NUMBER() OVER (
                    PARTITION BY Client
                    ORDER BY Date DESC) as rn
        ,       Client
        ,       Model
        ,       SerialNo
        ,       ...
        FROM    TonerRequest 
        WHERE   Status = 'Open' 
        ) SubQueryALias
WHERE   rn = 1
于 2013-05-09T09:55:22.963 に答える
1

クライアントがあなたのPKであると仮定すると、このようなアプローチを行うことができます

Select * from TonerRequest 
where Status = 'Open' 
and date in (select max(date) from TonerRequest group by Client)
于 2013-05-09T09:58:21.840 に答える
1

このようなもの:

SELECT * FROM TonerRequest TR, 
( Max(YourDateColumn) MaxDate, Client 
FROM TonerRequest 
WHERE Status = 'Open'
GROUP BY Client ) TRSub
WHERE TR.Client == TRSub.Client
AND TR.YourDateColum == TRSub.MaxDate
于 2013-05-09T09:59:13.027 に答える
0

これを試して:

SELECT TOP 1 Client, Model, SerialNo, Dep, Level, Colour, Status FROM TonerRequest WHERE Status = 'Open' ORDER BY Date DESC
于 2013-05-09T09:55:12.163 に答える