Sql server 如何修复“')附近的错误语法

Sql server 如何修复“')附近的错误语法,sql-server,Sql Server,我尝试了很多次,但找不到此查询的错误,它给了我以下错误: 附近的语法不正确 这也适用于access数据库,但不适用于sql server。您的问题是,您试图从子查询中进行选择,而无需为结果集指定别名 您所要做的就是更改此查询 string query = "select sum(See) as[All] ,(select top 1 See from StateSite where StatDate=@StatDate)as[Now], (select top 1 See from StateS

我尝试了很多次,但找不到此查询的错误,它给了我以下错误:

附近的语法不正确


这也适用于access数据库,但不适用于sql server。

您的问题是,您试图从子查询中进行选择,而无需为结果集指定别名

您所要做的就是更改此查询

string query = "select sum(See) as[All] ,(select top 1 See from StateSite
where StatDate=@StatDate)as[Now], (select top 1 See from StateSite where
StatDate=@Yesterday)as[Last],(select sum(See)  from  (select top 7 * from
StateSite order by ID desc))as[week] From StateSite";
对此

string query = "select sum(See) as[All] ,(select top 1 See from StateSite
where StatDate=@StatDate)as[Now], (select top 1 See from StateSite where
StatDate=@Yesterday)as[Last],(select sum(See)  from  (select top 7 * from
StateSite order by ID desc) as [subQuery])as[week] From StateSite";

您可以尝试直接运行对数据库的查询,并检查语法是否正确。可能存在多个查询失败的地方。例如,在我的例子中,为in子句传递的参数为空,创建了我的查询,如select*from tableName,id在其中,因此出现错误。

将其重写为可读的多行查询,您将自己看到问题。您是否尝试过将[week]改为[week]?SO中不需要代码答案,最好包括一些文字来解释错误。谢谢Devart,你的答案也很正确,但我必须选择一个@巴哈雷费兹,np。。。但在将来检查是否从同一个表中重新读取;
string query = "select sum(See) as[All] ,(select top 1 See from StateSite
where StatDate=@StatDate)as[Now], (select top 1 See from StateSite where
StatDate=@Yesterday)as[Last],(select sum(See)  from  (select top 7 * from
StateSite order by ID desc) as [subQuery])as[week] From StateSite";
SELECT
    [All] = SUM(See),
    [Now] = MAX(CASE WHEN StatDate = @StatDate THEN See END),
    [Last] = MAX(CASE WHEN StatDate = @Yesterday THEN See END),
    [week] = SUM(CASE WHEN RowNum < 8 THEN See END)
FROM (
    SELECT *, RowNum = ROW_NUMBER() OVER (ORDER BY id DESC)
    FROM StateSite
) t