1

我需要一个查询来返回每个人每天和每个面板的第一行。我还需要按面板计数。

样本数据

evnt_dat、evnt_descrp、panel_descrp、lname、fname、cardno
 2013 年 10 月 2 日上午 8:30 本地拨款奥斯汀小组埃文斯迈克尔 52836                           
 2013 年 10 月 2 日上午 8:53 当地格兰特奥斯汀小组 Lang Richard 50385                           
 2013 年 10 月 2 日上午 8:59 本地拨款奥斯汀小组埃文斯迈克尔 52836                                                   
 2013 年 10 月 2 日上午 9:22 本地拨款奥斯汀小组 Brozek Kerry 50346                           
 2013 年 10 月 2 日上午 9:34 本地拨款奥斯汀小组 Brozek Kerry 50346                           
 2013 年 10 月 2 日上午 10:02 本地拨款奥斯汀小组埃文斯迈克尔 52836                           
 2013 年 10 月 3 日上午 7:13 当地格兰特贝尔维尤小组戈因斯约瑟夫 21082                           
 2013 年 10 月 3 日上午 7:13 当地格兰特贝尔维尤小组戈因斯约瑟夫 21082                           
 2013 年 10 月 3 日上午 7:19 当地格兰特贝尔维尤小组 Bartolovic Doug 44974                           
 2013 年 10 月 3 日上午 7:23 当地格兰特贝尔维尤小组 Bartolovic Doug 44974                           

期望的结果:

2013 年 10 月 2 日上午 8:30 本地拨款奥斯汀小组埃文斯迈克尔 52836  
2013 年 10 月 2 日上午 8:53 当地格兰特奥斯汀小组 Lang Richard 50385     
2013 年 10 月 2 日上午 9:22 本地拨款奥斯汀小组 Brozek Kerry 50346  
计数 = 3  
2013 年 10 月 3 日上午 7:13 当地格兰特贝尔维尤小组戈因斯约瑟夫 21082  
2013 年 10 月 3 日上午 7:19 当地格兰特贝尔维尤小组 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 | 名称 | 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 回答