2016-07-25 153 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