Sql 如何获取 MAX 和 MIN 历史数据以及相应的用户
Sql how to get MAX and MIN Historydata along with corresponding user
我有这个 table 与 HistoryDate 和用户。我需要查询 Max(Historydate), User corresponind to Maxdate, Min(HistoryDate), User corresponding to MinDate for each ReviewID 这样
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
我可以使用 table 变量查询它,但想知道是否有其他方法可以获取它。
尝试在 FROM
子句中使用子查询来获取每个最小值和最大值。为了只获得每条评论的 min/max,您需要像这样使用 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
)
嗨,玩了几天脚本后,这对我有用。
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
我有这个 table 与 HistoryDate 和用户。我需要查询 Max(Historydate), User corresponind to Maxdate, Min(HistoryDate), User corresponding to MinDate for each ReviewID 这样
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
我可以使用 table 变量查询它,但想知道是否有其他方法可以获取它。
尝试在 FROM
子句中使用子查询来获取每个最小值和最大值。为了只获得每条评论的 min/max,您需要像这样使用 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
)
嗨,玩了几天脚本后,这对我有用。
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