2012-02-10 61 views
3

我有这个简单的SQL语句中的多标识符无法绑定:当SQL Server中的两个值之间的差异化妆2005

select Expr1.value - Expr2.value FROM 
(SELECT 
Expr1 = (SELECT COUNT(ID) FROM Table1), 
Expr2 = (SELECT COUNT(ID_) FROM Table1 WHERE (UPDATED > CREATED)) 
) 

这引发了我的错误:

多部分标识符“Expr1.value”无法绑定 多部分组成的标识符“Expr2.value”无法绑定

哪里是我的错?

我在Stackoverflow中阅读,但许多主题只引用INNER JOIN语句。我正在寻找做Expr1Expr2之间的区别。 (和显示结果)

+0

为什么这是downvoted?因为OP是犯了一个错误,并问如何解决它?关于SO的99%的问题都是关于“我在做X错误,我不知道如何解决”,这就是重点所在! *(+ 1补偿)* – MatBailie 2012-02-10 09:04:09

+0

许多用户没有解释就低估了。那么,我能做什么? Thx Dems for upvote :) – 2012-02-10 09:12:25

回答

6

尝试:

select Expr1 - Expr2 FROM 
(
    SELECT 
    Expr1 = (SELECT COUNT(ID) FROM Table1), 
    Expr2 = (SELECT COUNT(ID_) FROM Table1 WHERE (UPDATED > CREATED)) 
) as t 

此:

​​

返回结果集名为Expr1Expr2列,这样,你应该是指他们。无论如何,我更喜欢as混淆列:

select Expr1 - Expr2 FROM 
(
    SELECT 
    (SELECT COUNT(ID) FROM Table1) as Expr1, 
    (SELECT COUNT(ID_) FROM Table1 WHERE (UPDATED > CREATED)) Expr2 
) as t 
+0

第一个SELECT语句结束时的意思是什么? – 2012-02-10 08:50:53

+0

@MichaelSwan't'是子查询的别名,没有它你会得到一个语法错误,例如:[在SO上使用子查询时附近有任何东西的语法不正确](http://stackoverflow.com/questions/4997132/sql-server- 2008年MGMT-工作室不正确的语法,近东西 - 使用 - 子查询)。为了清晰,我添加了'as' :-)。 – 2012-02-10 09:01:11