0

ここに私のテーブルがあります:

DateOfPerformance   DateOfPerformance4Sort    userfullname
19/06/2012          2012-06-19 13:38:36.630   T Tes
**19/06/2012        2012-06-19 17:59:18.933   Zazon Rotem
19/06/2012          2012-06-19 13:21:18.770   Zazon Rotem**
05/07/2012          2012-07-05 09:50:20.437   Hazani Efrat
05/06/2012          2012-06-05 17:19:23.670   Mark Oded
11/07/2012          2012-07-11 17:37:20.490   Aviv Test
19/06/2012          2012-06-19 13:36:33.583   Roys Ady
05/07/2012          2012-07-05 09:50:20.497   T Rose

ご覧のとおり、同じ行が 2 つありますがuserfullname、違いはdateofperformance4sort

最も早い実施日で同じ結果を得るにはどうすればよいですか?

4

2 に答える 2

2

ユーザーが別の日に公演を行うことができると仮定します。. .

create table your_table (
  DateOfPerformance date not null,
  DateOfPerformance4Sort datetime not null,
  userfullname varchar(20) not null
);
insert into your_table values
('2012-06-19', '2012-06-19 13:38:36.630', 'T Tes'),
('2012-06-19', '2012-06-19 17:59:18.933', 'Zazon Rotem'),  -- Two more performances
('2012-06-19', '2012-06-19 13:21:18.770', 'Zazon Rotem'),  -- down below.
('2012-07-05', '2012-07-05 09:50:20.437', 'Hazani Efrat'),
('2012-06-05', '2012-06-05 17:19:23.670', 'Mark Oded'),
('2012-07-11', '2012-07-11 17:37:20.490', 'Aviv Test'),
('2012-06-19', '2012-06-19 13:36:33.583', 'Roys Ady'),
('2012-07-05', '2012-07-05 09:50:20.497', 'T Rose'),
('2012-07-19', '2012-07-19 11:21:18.770', 'Zazon Rotem'),
('2012-07-19', '2012-07-19 23:21:18.770', 'Zazon Rotem');

. . . これは単純な集計クエリです。

select userfullname, DateOfPerformance, min(DateOfPerformance4Sort) DateOfPerformance4Sort
from your_table
group by userfullname, DateOfPerformance
order by userfullname, DateOfPerformance

Zazon Rotem は 2 つの異なる日に公演を行ったため、2 つの行が返されます。

Zazon Rotem 2012-06-19  June, 19 2012 13:21:18-0700
Zazon Rotem 2012-07-19  July, 19 2012 11:21:18-0700
于 2012-08-11T22:51:25.480 に答える
0

これを解決し、ユーザーごとに 1 つの値を取得する一般的な方法は、row_number() を使用することです。

select t.DateOfperformance, DateOfPerformance4Sort, userfullname
from (select t.*,
             row_number() over (partition by userfullname order by DateOfPerformance4Sort
                               ) as seqnum
      from t
     ) a
where seqnum = 1

これにより、サブクエリ内の各ユーザーの各レコードに連番が割り当てられます。次に、最初のものを選択します。

于 2012-08-12T14:58:20.460 に答える