【发布时间】:2014-02-22 01:33:52
【问题描述】:
我对此一头雾水,因为我可以让这段代码在 SQL 中工作,但是当我将它传输到一个简单的 gridview 时,代码错误提示“无效的对象名称表名”。
我正在尝试做的是获取一个静态数字并从同一张表中的三个不同列中减去它。
这就是我在 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 时却不行。
::edit::
请参阅下面的答案以获取解决方案。必须重新编写代码才能使其工作。
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
【问题讨论】:
-
你是如何在 gridview 中使用这段代码的?你的意思是sqldatasource吗?
-
是的,一个 sqldatasource。
标签: asp.net sql sql-server gridview sql-server-2012