1

各日、各パネルの最初の行を返すクエリが必要です。パネルごとのカウントも必要です。

サンプルデータ

evnt_dat、evnt_descrp、panel_descrp、lname、fname、cardno
 2013 年 10 月 2 日 8:30 AM ローカル グラント オースティン パネル Evans Michael 52836                           
 2013 年 10 月 2 日 8:53 AM ローカル グラント オースティン パネル ラング リチャード 50385                           
 2013 年 10 月 2 日 8:59 AM ローカル グラント オースティン パネル Evans Michael 52836                                                   
 2013 年 10 月 2 日 9:22 AM ローカル グラント オースティン パネル Brozek Kerry 50346                           
 2013 年 10 月 2 日 9:34 AM ローカル グラント オースティン パネル Brozek Kerry 50346                           
 2013 年 10 月 2 日 10:02 AM ローカル グラント オースティン パネル Evans Michael 52836                           
 2013 年 10 月 3 日 7:13 AM ローカル グラント ベルビュー パネルがジョセフに参加 21082                           
 2013 年 10 月 3 日 7:13 AM ローカル グラント ベルビュー パネルがジョセフに参加 21082                           
 2013 年 10 月 3 日 7:19 AM ローカル グラント ベルビュー パネル Bartolovic Doug 44974                           
 2013 年 10 月 3 日 7:23 AM ローカル グラント ベルビュー パネル Bartolovic Doug 44974                           

望ましい結果:

2013 年 10 月 2 日 8:30 AM ローカル グラント オースティン パネル Evans Michael 52836  
2013 年 10 月 2 日 8:53 AM ローカル グラント オースティン パネル ラング リチャード 50385     
2013 年 10 月 2 日 9:22 AM ローカル グラント オースティン パネル Brozek Kerry 50346  
カウント = 3  
2013 年 10 月 3 日 7:13 AM ローカル グラント ベルビュー パネルがジョセフに参加 21082  
2013 年 10 月 3 日 7:19 AM ローカル グラント ベルビュー パネル Bartolovic Doug 44974  
カウント = 2    

私は試した

;WITH CTE AS 
( SELECT *, ROW_NUMBER() OVER(PARTITION BY cardno ORDER BY convert(date,evnt_dat) DESC) AS RN 
    FROM ev_log ) 
SELECT cardno, lName, fname, evnt_Dat, panel_descrp 
  FROM CTE WHERE RN = 1

ありがとう

4

1 に答える 1

0

更新しました:

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, evnt_dat)) evnt_dat, 
       evnt_descrp, panel_descrp, lname, fname, cardno
  FROM
(
  SELECT evnt_dat, evnt_descrp, panel_descrp, lname, fname, cardno,
         ROW_NUMBER() OVER (PARTITION BY evnt_descrp, panel_descrp, lname, fname, 
                            DATEADD(dd, 0, DATEDIFF(dd, 0, evnt_dat)) ORDER BY evnt_dat) rnum
    FROM ev_log
) q
 WHERE rnum = 1
 ORDER BY evnt_dat, evnt_descrp, panel_descrp, lname, fname;

注: 明らかに、内部選択の代わりに CTE を使用することもできます。

出力例:

| | EVNT_DAT | EVNT_DESCRP | PANEL_DESCRP | LNAME | FNAME | カルドノ |
|------------|-------------|----------------|----- ------|--------|--------|
| | 2013-10-02 | ローカル助成金 | オースティン パネル | ブロゼク | ケリー | 50346 |
| | 2013-10-02 | ローカル助成金 | オースティン パネル | エヴァンス | マイケル | 52836 |
| | 2013-10-02 | ローカル助成金 | オースティン パネル | ラング | ラング | リチャード | 50385 |
| | 2013-10-03 | ローカル助成金 | ベルビュー パネル | バルトロビッチ | ダグ | ダグ | 44974 |
| | 2013-10-03 | ローカル助成金 | ベルビュー パネル | ゴイン | ジョセフ | 21082 |

これがSQLFiddleのデモです

于 2013-11-11T02:36:24.997 に答える