简体   繁体   English

Sql如何获得MAX和MIN Historydata以及相应的用户

[英]Sql how to get MAX and MIN Historydata along with corresponding user

在此输入图像描述

I have this table with HistoryDate and User. 我有HistoryDate和User这个表。 I need to query Max(Historydate), User correspondind to Maxdate, Min(HistoryDate), User corresponding to MinDate for each ReviewID like this 我需要查询Max(历史日期),用户对应Maxdate,Min(HistoryDate),对应每个ReviewID的MinDate用户

   ModifiedDate |ModifiedBy| CreatedDate  | CreatedBy |ReviewId
  2/16/17 12:58 | Susan    | 2/7/17 15:39 | John      | 1
  2/15/17 13:25 | Sam      | 2/9/17 20:27 | John      | 2

I am able to query it using table variable but wondering any other way to get it. 我能够使用表变量查询它,但想知道任何其他方式来获取它。

Have a go at using sub-queries in the FROM clause to get each min and max. FROM子句中使用子查询来获取每个min和max。 In order to get only the min/max for each review, you'll need to use GROUP BY ReviewID like so: 为了获得每次审核的最小/最大值,您需要使用GROUP BY ReviewID如下所示:

SELECT max.date AS maxDate, max.user AS maxUser, min.date AS minDate, 
min.user AS minUser
FROM (
    (SELECT MAX(HistoryDate) date, user, ReviewID
    FROM HistoryTable
    GROUP BY ReviewID) max
        JOIN 
    (SELECT MIN(HistoryDate) date, user, ReviewID
    FROM HistoryTable
    GROUP BY ReviewID) min
        ON max.ReviewID = min.ReviewID
)

Hi after few days of playing with script this worked for me. 嗨几天玩脚本后,这对我有用。

SELECT ModifiedDate, ModifiedBy, CreatedDate ,CreatedBy,  crt.ReviewID 
     FROM   (SELECT  HistoryDate  CreatedDate, ReviewId,   [User] CreatedBy FROM HistoryTable 
        WHERE HistoryDate in (SELECT min(HistoryDate)  FROM  HistoryTable GROUP BY ReviewID )) crt
INNER JOIN
    (SELECT HistoryDate  ModifiedDate, ReviewID, [User] ModifiedBy FROM  HistoryTable 
        WHERE HistoryDate in (SELECT Max(HistoryDate)  FROM HistoryTable GROUP BY ReviewID )) Modi
ON crt.ReviewId = Modi.ReviewID
         ORDER BY crt.ReviewID 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM