-1

我正在使用下面的代码从我的表中获取结果并将其绑定到 gridview 控件。但我收到以下错误:

"System.Data.SqlClient.SqlException: Incorrect syntax near 'x'" at "sqlda.Fill(ds1)".

我是 ASP.NET 的新手,无法编写好的查询。

SqlConnection con = new SqlConnection(connStr);
con.Open();
str = "WITH x AS (SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY PersonRFID ORDER BY DateStamp) FROM AISDb where action = 'IN'), y As(SELECT *, rna = ROW_NUMBER() OVER (PARTITION BY PersonRFID ORDER BY DateStamp)FROM AISDb where action='OUT') SELECT y.ID,x.ID,x.PersonName,y.PersonName,x.PersonRFID, DtATEDIFF(MINUTE, x.TimeStamp, y.TimeStamp) FROM x ,y where x.PersonRFID = y.PersonRFIDAnd x.rn=y.rnaAND  cast(x.Datestamp as date) = cast(y.Datestamp as date)Order By x.PersonName";
com = new SqlCommand(str, con);
sqlda = new SqlDataAdapter(com);
ds1 = new DataSet();
sqlda.Fill(ds1);
4

2 回答 2

2

根据我的第一眼(不运行查询),我可以看到一些错误。

中有错字datediff

把前面的空格AND放在x.PersonRFID = y.PersonRFIDAnd x.rn=y.rnaAND

把前面的空间放进orderdate)Order By

于 2013-04-03T19:23:09.270 回答
1

您的查询有几个问题可能导致您的错误。首先更改DtATEDIFFDATEDIFF(这可能是一个错字)。

更重要的是,固定间距。你有领域相互运行。

用你的例子和带间距的例子来看看这个小提琴:

http://sqlfiddle.com/#!3/47f7e/1

由于以下原因,您会收到该错误:

y.PersonRFIDAnd x

最后的 x 抛出错误。修复这个和它之后的一个(在演员之前),它应该可以工作。

于 2013-04-03T19:20:52.017 回答