2016-07-25 152 views
1

我尝试了很多,但无法找到什么是错的这个查询,这给了我这个错误:如何解决附近有语法错误“)”

附近有语法错误)“。

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"; 

也适用于访问数据库,但不能通过sql server正常工作。

+1

改写为可读多查询,你会看到自己的问题。 –

+0

你是否尝试过'))作为[周]'到')d)作为[周]'? – gofr1

回答

1

你的问题是你试图从一个子查询中选择而没有给结果集分配一个别名。

所有你需要做的就是从这个

string query = "select sum(See) as[All] ,(select top 1 See from StateSite 
where [email protected])as[Now], (select top 1 See from StateSite where 
[email protected])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 [email protected])as[Now], (select top 1 See from StateSite where 
[email protected])as[Last],(select sum(See) from (select top 7 * from 
StateSite order by ID desc) as [subQuery])as[week] From StateSite"; 
2
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 
+2

SO中不需要代码解答,最好是包含一些文本来解释错误。 – SurvivalMachine

+0

谢谢Devart,你的回答也是肯定的,但我必须选择一个! –

+0

@Bahareh Feizi,np ...但将来检查重新从同一张表中读取;) – Devart