【问题标题】:SQL subtraction code works in SQL but not in sqldatasourceSQL 减法代码在 SQL 中有效,但在 sqldatasource 中无效
【发布时间】: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


【解决方案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

【讨论】:

  • 这对我一点帮助都没有。我知道他们是不同的。但是,它不能解决在 SQL 中运行的第一段代码的初始问题,而不是在带有 sqldatasource/gridview 的 asp 页面中。这就是我投反对票的原因。
  • 它们不仅不同,最后两个永远不会起作用。我没有看到你“尝试”过它们,我认为你在 ASP.NET 中“使用过”它们。我再仔细看看。
  • 我想不出任何其他可行的代码变体。我不得不尝试一下。
  • 在第一个 select 语句中的 c、第二个 select 语句中的 b 和第三个 select 语句中的 c 上出现语法错误。建议?现在查看文档。
  • @TechieJoe 我运行了这个确切的查询,这是有效的(SQL SERVER 2008)。你到底跑了什么?你能告诉我整个异常吗?
猜你喜欢
  • 1970-01-01
  • 2019-11-21
  • 2017-08-17
  • 2015-08-22
  • 2019-12-06
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
相关资源
最近更新 更多