如何选择最大和最小日期值并将其作为查询传递



我有一个表,其中包含以下条目

工作ID11[/tr>
自定义ID TransDate
1 2012-12-01 12
1 2012-12-03 45
1 2013-01-21 3
2 2012-12-23
3 2013-01-04 13
3 2013-12-24 16
4 2014-01-02 2

使用标量子查询来查找整个表中的最大日期:

SELECT *
FROM dbo.MyTable
WHERE TransDate >= '2012-12-01' AND
TransDate < (SELECT DATEADD(DAY, 1, MAX(TransDate)) FROM dbo.MyTable);

请注意,我在WHERE子句中使用了一个严格的不等式(小于(来反对最晚日期一天。这将包括在最长日期当天或之前的所有日期。

您也可以声明变量,然后按如下所示使用它们:

DECLARE @minDate DATE = (SELECT MIN(TransDate) FROM Customer);
DECLARE @maxDate DATE = (SELECT MAX(TransDate) FROM Customer);
SELECT *  FROM dbo.MyTable WHERE   TransDate >= @minDate AND
TransDate   <= @maxDate