这是我的查询
SELECT TOP 1 MAX(CAST(Id AS int)) , Ddate, Name FROM WonPrize WHERE Ddate=@Ddate GROUP BY Id,Ddate,Name
查询在VB.NET上给我一个错误代码。
IErrorInfo.GetDescription failed with E_FAIL(0x80004005)
我认为自己编写的语法没有错误
我试图显示MAX ID,但MAX(Id)没有显示2号ID,因此我尝试使用此MAX(CAST(Id AS int))。它给我一个错误代码。 我应该怎么做?
我正在使用oledb。
答案 0 :(得分:0)
由于VB.NET上的oledb错误,我只是更改了语法。
发件人:
SELECT TOP 1 MAX(CAST(Id AS int)) , Ddate, Name FROM WonPrize WHERE Ddate=@Ddate GROUP BY Id,Ddate,Name
收件人:
SELECT TOP 1 Id, Ddate, Name FROM WonPrize WHERE Ddate=@Ddate AND Id=(SELECT MAX(Id) FROM WonPrize)
这可以解决我的问题。
oledb不能与使用MAX(value)和MIN(value)的第二和第三列值一起使用。我决定将其放在WHERE语句中,因为MAX和MIN仅适用于单个值的oledb。而且我认为First语法仅适用于SQLClient,不适用于OLEDB。