Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按最大值(日期)划分的SQL组_Sql_Sql Server 2005 - Fatal编程技术网

按最大值(日期)划分的SQL组

按最大值(日期)划分的SQL组,sql,sql-server-2005,Sql,Sql Server 2005,我有以下疑问。每个驾照号码都有许多检查日期。因此,记录可以如下所示: InspectionDate DriverLicenseNumber 2010-01-02 00:00:00 123 2010-01-05 00:00:00 123 2011-01-05 00:00:00 345 SELECT MAX(InspectionDate), DriverLicenseNumber FROM #Test GROUP BY

我有以下疑问。每个驾照号码都有许多检查日期。因此,记录可以如下所示:

InspectionDate         DriverLicenseNumber
2010-01-02 00:00:00         123
2010-01-05 00:00:00         123 
2011-01-05 00:00:00         345 


  SELECT 
MAX(InspectionDate),
DriverLicenseNumber
FROM #Test
 GROUP BY DriverLicenseNumber
为什么对于同一个驾照号码,我仍然可以获得多个日期


谢谢

下面的代码说明了这实际上不是一个问题,正如Martin在上面所说的,肯定还有其他问题

CREATE TABLE #test
(
    a DATETIME,
    id INT
)

INSERT INTO #test VALUES ('20100102', 123)
INSERT INTO #test VALUES ('20100105', 123)
INSERT INTO #test VALUES ('20110105', 345)

SELECT MAX(a), id 
FROM #test
GROUP BY id

DROP TABLE #test

下面的代码说明了这实际上不是一个问题,正如Martin在上面所说的,肯定还有其他事情在发生

CREATE TABLE #test
(
    a DATETIME,
    id INT
)

INSERT INTO #test VALUES ('20100102', 123)
INSERT INTO #test VALUES ('20100105', 123)
INSERT INTO #test VALUES ('20110105', 345)

SELECT MAX(a), id 
FROM #test
GROUP BY id

DROP TABLE #test

试试这个,它会测试Damien的想法

SELECT
  MAX(InspectionDate),
  CAST(DriverLicenseNumber AS INT)
FROM
  #Test
GROUP BY
  CAST(DriverLicenseNumber AS INT)
或者可能是这个

SELECT
  MAX(InspectionDate),
  LTRIM(RTRIM(UPPER(DriverLicenseNumber)))
FROM
  #Test
GROUP BY
  LTRIM(RTRIM(UPPER(DriverLicenseNumber)))

试试这个,它会测试Damien的想法

SELECT
  MAX(InspectionDate),
  CAST(DriverLicenseNumber AS INT)
FROM
  #Test
GROUP BY
  CAST(DriverLicenseNumber AS INT)
或者可能是这个

SELECT
  MAX(InspectionDate),
  LTRIM(RTRIM(UPPER(DriverLicenseNumber)))
FROM
  #Test
GROUP BY
  LTRIM(RTRIM(UPPER(DriverLicenseNumber)))

只需将表中的DriverLicenseNumber更改为整数,查询将按原样工作。

只需将表中的DriverLicenseNumber更改为整数,查询将按原样工作。

DriverLicenseNumber列的类型是什么。其中可能包含空格/非打印字符吗?GROUP BY每个DriverLicenseNumber只返回一行。肯定还有其他原因。这就是我的想法。DriverLicenseNumber是一个VARCHAR25,复制的值完全相同。@user。你能将CASTDriverLicenseNumber作为varbinary25添加到选择列表中,看看相同的数字之间是否有任何差异吗?是的,我正在将数据传递到excel,它删除了许可证号码前面的00,所以当我进行重复检查时,它说这些是重复的。小男孩帮了忙,谢谢!DriverLicenseNumber列的类型是什么。其中可能包含空格/非打印字符吗?GROUP BY每个DriverLicenseNumber只返回一行。肯定还有其他原因。这就是我的想法。DriverLicenseNumber是一个VARCHAR25,复制的值完全相同。@user。你能将CASTDriverLicenseNumber作为varbinary25添加到选择列表中,看看相同的数字之间是否有任何差异吗?是的,我正在将数据传递到excel,它删除了许可证号码前面的00,所以当我进行重复检查时,它说这些是重复的。小男孩帮了忙,谢谢!