Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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
C# Sql查询错误asp.net c_C#_Asp.net_Sql Server 2008_Dataset_Sqldatareader - Fatal编程技术网

C# Sql查询错误asp.net c

C# Sql查询错误asp.net c,c#,asp.net,sql-server-2008,dataset,sqldatareader,C#,Asp.net,Sql Server 2008,Dataset,Sqldatareader,我使用下面的代码从表中获取结果,并将其绑定到gridview控件。 但我得到了以下错误: System.Data.SqlClient.SqlException:sqlda.Fillds1中“x”附近的语法不正确 我是ASP.NET新手,不能编写好的查询 SqlConnection con = new SqlConnection(connStr); con.Open(); str = "WITH x AS (SELECT *, rn = ROW_NUMBER() OVER (PARTITION B

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

System.Data.SqlClient.SqlException:sqlda.Fillds1中“x”附近的语法不正确

我是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);

您的查询中有几个问题可能是导致错误的原因。首先将DtATEDIFF更改为DATEDIFF这可能是一个输入错误

更重要的是,确定间距。您的字段会相互碰撞

看到这把小提琴与你的例子和一个间距:

您之所以会出现此错误,是因为:

y.PersonRFIDAnd x

末尾的x抛出错误。在转换之前修复这个和后面的一个,它应该可以工作。

根据我的第一次查看,在不运行查询的情况下,我可以看到一些错误

datediff中有输入错误

在x.PersonRFID=y.PersonRFID和x.rn=y.rnand之前和中放置空格


在dateOrder By中将空格放在order之前

显然,SQL语法中有错误。。。您是否尝试过直接对数据库运行查询?是的,它给出了相同的错误,但我不明白x作为SELECT*,rn=按PersonRFID按日期戳排列的分区上的行数是什么错误,其中action='IN',y作为SELECT*,rna=分区上的行号按个人RFID从AISDb按邮戳排序,其中action='OUT'选择y.ID、x.ID、x.PersonName、y.PersonName、x.PersonRFID、DATEDIFFMINUTE、x.TimeStamp、y.TimeStamp从x开始,其中x.PersonRFID=y.PersonRFID和x.rn=y.rna和castx.DateStamp as date=casty.DateStamp as date ORDER BY x.PersonName;现在我正在使用这个查询,当使用数据库而不是在C中查询时,它会给出很好的结果,x为SELECT*,rn=按个人划分的行数从AISDb按日期戳排序,其中action='in',y为SELECT*,rna=按个人划分的行数从AISDb按日期戳排序,其中action='OUT'选择y.ID,x.ID,x、 PersonName,y.PersonName,x.PersonRFID,DATEDIFFMINUTE,x.TimeStamp,y.TimeStamp FROM x,y其中x.PersonRFID=y.PersonRFID,x.rn=y.rna和castx.Datestamp as date=casty.Datestamp as date按x.PersonName排序;现在我使用这个查询,当使用数据库而不是cDebug进行查询时,它会给出很好的结果代码中,放置断点,从本地或观察窗口复制查询,并将其粘贴到您的管理工作室以查看差异您得到的确切错误是什么?我需要更多的描述来回答这个问题?