Sql server 2008 r2 希望从db表datewise中获取最大值(ID),但在SQLServer2008R2中它只返回相同的ID

Sql server 2008 r2 希望从db表datewise中获取最大值(ID),但在SQLServer2008R2中它只返回相同的ID,sql-server-2008-r2,Sql Server 2008 R2,我试图从数据库表中获取最大ID,并希望在win form load中显示它。 我使用以下查询来获取最大ID SELECT ISNULL(MAX(ID),0)+1 FROM StockMain WHERE VRDATE = '2013-01-30' 上面应该返回今天的最大ID,例如,如果我第一次执行此语句,它将返回值“1”。在保存ID为“1”的第一条记录后,它应该给我MAX(ID)=“2”。但它返回的值是1 任何建议或解决方案???胡乱猜测。。。但是什么数据类型是VRDATE?它包括时间成分,

我试图从数据库表中获取最大ID,并希望在win form load中显示它。 我使用以下查询来获取最大ID

SELECT ISNULL(MAX(ID),0)+1  FROM StockMain WHERE VRDATE = '2013-01-30'
上面应该返回今天的最大ID,例如,如果我第一次执行此语句,它将返回值“1”。在保存ID为“1”的第一条记录后,它应该给我MAX(ID)=“2”。但它返回的值是1


任何建议或解决方案???

胡乱猜测。。。但是什么数据类型是
VRDATE
?它包括时间成分,还是仅仅是一个日期

如果它包含一个时间组件,指示您保存记录的时间,它将不会通过
VRDATE='2013-01-30'
检查,因为默认时间为午夜。由于时间不同,它们也不相等

相反,请尝试:

SELECT ISNULL(MAX(ID),0)+1  
FROM StockMain 
WHERE VRDATE BETWEEN '2013-01-30' AND '2013-02-01'

下一个问题。。。您是否考虑过使用
IDENTITY
列而不是手动管理ID值?

VRDATE的数据类型是DateTime。此ID列显示当天最近的ID,ID值是手动设置的。如果没有匹配的行,则select语句将不返回结果。它不会返回1。