1

***内のクエリ***は、 の順序で分割された行を生成しstatus_dateます。その結果に同じ行が複数ある場合は、 status_dateそれらの行のみをchange_date.

以下のクエリを思いつきましたが、望ましい結果が得られません。

 SELECT  MID,status_date,status,change_date, row_number() OVER (PARTITION BY MID ORDER BY  change_date DESC )  as RN1, 1 as TimeRange
                    FROM 
                        (
                    *** SELECT MID,status_date,status,change_date,
                        rn = row_number() OVER (PARTITION BY MID ORDER BY status_date DESC)
                        FROM listing_History   (nolock)
                         WHERE  MID like  '12-572561'  ****

                        )  AS A

参考のため :

***および内のクエリの結果***:

12-572561   2012-06-11 00:00:00.000 Canceled    2012-06-11 14:53:22.957  1
12-572561   2012-03-01 00:00:00.000 Canceled    2012-03-01 13:32:40.030  2
12-572561   2012-01-02 00:00:00.000 Active      2012-01-02 07:32:34.067  3
12-572561   2012-01-02 00:00:00.000 Active      2012-06-11 07:43:29.400  4
12-572561   2012-01-02 00:00:00.000 Active      2012-01-10 00:01:03.407  5
12-572561   2012-01-02 00:00:00.000 Active      2012-06-11 07:43:29.417  6

既存のクエリの結果:

12-572561   2012-06-11 00:00:00.000 Canceled    2012-06-11 14:53:22.957  1  1
12-572561   2012-01-02 00:00:00.000 Active      2012-06-11 07:43:29.417  2  1
12-572561   2012-01-02 00:00:00.000 Active      2012-06-11 07:43:29.400  3  1
12-572561   2012-03-01 00:00:00.000 Canceled    2012-03-01 13:32:40.030  4  1
12-572561   2012-01-02 00:00:00.000 Active      2012-01-10 00:01:03.407  5  1
12-572561   2012-01-02 00:00:00.000 Active      2012-01-02 07:32:34.067  6  1

望ましい結果:

12-572561   2012-06-11 00:00:00.000 Canceled    2012-06-11 14:53:22.957  1  1
12-572561   2012-03-01 00:00:00.000 Canceled    2012-03-01 13:32:40.030  2  1
12-572561   2012-01-02 00:00:00.000 Active      2012-06-11 07:43:29.417  6  1
12-572561   2012-01-02 00:00:00.000 Active      2012-06-11 07:43:29.400  4  1
12-572561   2012-01-02 00:00:00.000 Active      2012-01-10 00:01:03.407  5  1
12-572561   2012-01-02 00:00:00.000 Active      2012-01-02 07:32:34.067  3  1
4

2 に答える 2

2

クエリの最後にORDER BYを使用できますchange_date

于 2013-05-08T20:08:56.863 に答える
2

row_number() 関数は、結果の順序を決定しません。ORDER BY 句が必要です。結果にrow_number()値が必要ない場合は、次のことができます

SELECT MID,status_date,status,change_date
FROM listing_History   (nolock)
WHERE  MID like  '12-572561'
ORDER BY status_date DESC, change_date DESC
于 2013-05-08T20:16:27.193 に答える