2012-11-06 186 views
10

我有一個正確的工作T-SQL腳本以這種形式SELECT SUM()FROM(SELECT(SELECT())

SELECT columnA 
     AS 
     'numbers' 
FROM tableA 
WHERE clause 

這個劇本給了我爲一列,被叫號碼,整數的。我要總結這些。

調用上面的線「腳本」我嘗試以下設置

SELECT SUM(numbers) 
FROM (
      script 
     ) 

閱讀select count(*) from select我認爲這個工作,但是,它並沒有。我不斷收到「附近有語法錯誤。 「

我不知道它是否重要,但在這裏命名爲columnA本身是由SELECT語句生成的。

+1

你似乎濫用術語「腳本」。您可以發佈您正在使用的* exact *查詢以及* exact *錯誤嗎? – ruakh

回答

17

你需要一個別名的子查詢:

SELECT SUM(numbers) 
FROM  
(
    script -- your subquery will go here 
) src -- place an alias here 

所以完整的查詢將是:

select sum(numbers) 
from 
(
    SELECT columnA AS numbers 
    FROM tableA 
    WHERE clause 
) src 
+0

順便說一下,這是一個tSQL問題。 Oracle不關心你是否爲你的子查詢提供別名。不確定MySQL或其他人,但tSQL需要所有子查詢的別名。 – Bill

+2

@ Bill:甲骨文在那裏做錯了。正確實施並不是問題。 –

+0

@Bill我的首選是別名,所有子查詢是否需要。它使得數據來自何處更清晰。 – Taryn

5

我們絕對沒有任何問題,以達到你想要的東西。我們沒有看到你的entier查詢,但最常見的問題是人們忘記添加一個別名到他們的嵌套select聲明。看看這個樣本完美的作品:

select sum(col1) as sum1 
from (select col1 
     from (select 1 col1 union all select 2 union all select 3) tmp 
    ) tmp2 

按照OP,這裏是你的最終查詢:

SELECT SUM(numbers) 
FROM (
      SELECT columnA 
        AS 
        'numbers' 
       FROM tableA 
      WHERE clause 
     ) tmp