2014-01-29 44 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

我想不出任何可行的代码变体。我必须尝试一些。 –

相关问题