2014-01-29 40 views
1

我抓住了我的頭,因爲我可以讓這段代碼在SQL中工作,但是當我將它轉移到一個簡單的gridview時,代碼錯誤指出'Invalid Object name表名」。SQL減法代碼在SQL中工作,但不是在sqldatasource中工作

我試圖做的是採取一個靜態的數字,並從同一個表中的三個不同的列中減去它。

這是我SQL內的工作:

SELECT 

(3000) 
- 

(SELECT COUNT(column1) from table1 where column1 = 'Agreed') 

+ 

(SELECT COUNT(column2) from table1 where column2 = 'Agreed') 

+ 

(SELECT COUNT(column3) from table1 where column3 = 'Agreed') 

AS subtract 

我已經試過了靜態總走動這樣

(3000) 

- 

SELECT 

(SELECT COUNT(column1) from table1 where column1 = 'Agreed') 

+ 

(SELECT COUNT(column2) from table1 where column2 = 'Agreed') 

+ 

(SELECT COUNT(column3) from table1 where column3 = 'Agreed') 

AS subtract 

而且....

「3000 '

- 

SELECT 

(SELECT COUNT(column1) from table1 where column1 = 'Agreed') 

+ 

(SELECT COUNT(column2) from table1 where column2 = 'Agreed') 

+ 

(SELECT COUNT(column3) from table1 where column3 = 'Agreed') 

AS subtract 

但都返回SQL中的語法錯誤。

我希望得到的是從靜態數字中取出三條select語句的總和的剩餘部分。

我在這裏錯過了一些簡單的東西嗎?我難以理解爲什麼這可以在SQL中工作,但不是當我將代碼轉移到gridview時。

::編輯::

見下面回答的解決方案。必須重新編寫代碼才能使其正常工作。

SELECT 

(3000) 
- 
a.c 
+ 
b.c 
+ 
c.c 

from (SELECT COUNT(*) AS c from table1 where column1 = 'Agreed') a 
left join (SELECT COUNT(*) AS c from table1 where column2 = 'Agreed') b on 1=1 
left join (SELECT COUNT(*) AS c from table1 where column3 = 'Agreed') c on 1=1 
+0

你是如何在GridView中使用此代碼?你的意思是一個sqldatasource? – boruchsiper

+0

是的,一個sqldatasource。 –

回答

1

第一和第二查詢是不一樣的,在所有:

SELECT 3000 - 10 

是不一樣的是:

3000 - SELECT 10 

,因爲它不會開始第二個是無效由SELECT聲明(如你在第一次)。這不是一個ASP.NET指定問題。

編輯:

怎麼樣這個查詢:

SELECT 

(3000) 
- 
a.c 
+ 
b.c 
+ 
c.c 

from (SELECT COUNT(*) AS c from table1 where column1 = 'Agreed') AS a 
left join (SELECT COUNT(*) AS c from table1 where column2 = 'Agreed') AS b on 1=1 
left join (SELECT COUNT(*) AS c from table1 where column3 = 'Agreed') AS c on 1=1 
+0

這完全不能幫助我。我知道他們是不同的。但是,它不能解決SQL中第一段代碼的初始問題,也不能解決使用sqldatasource/gridview的asp頁面中的問題。這就是爲什麼我低估了。 –

+0

他們不僅不同,最後兩個將永遠不會工作。我沒有看到你「嘗試」與他們,我想你在ASP.NET中「使用」他們。我會看看更近一點。 – cubitouch

+0

我想不出任何可行的代碼變體。我必須嘗試一些。 –

相關問題