2013-03-14 144 views
1

我已经安装了sql server 2008 r2 Management Studio,但服务器有sql server 2005数据库。有什么,为什么我可以测试将SQL Server 2005上运行的查询,我在SQL Server 2008年写如何在安装2008 r2时测试Sql server 2005查询

我有样本查询其工作在SQL Server 2008而不是2005年

CREATE TABLE #Tmp 
(
    NoOfMembers int, 
    AverageAge int 
) 
insert into #Tmp(NoOfMembers,AverageAge)  

Values((Select Count(*)NoOfMembers From Customer where Confirmed = 1), 
(Select AVG(CONVERT(int,Age)) AverageAge From Customer where Confirmed = 1) 
) 
select * From #Tmp 

任何帮助 Thanx提前

+0

whts错误消息?因为这个查询在SQL Server 2008中工作正常 – 2013-03-14 06:43:51

+1

@PraveenNambiar他说他的查询在2005年无效,2008年没有问题。 – YvesR 2013-03-14 06:46:23

+0

@PraveenNambiar是我的查询在2008年工作,但在2005年没有。 – ovais 2013-03-14 06:50:53

回答

0

您可以使用SQL 2008管理工作室对2005年SQL服务器没有问题。如果您的SQL语句针对数据库触发,并且在SQL 2005中不起作用,则服务器将回答一条错误消息。

如果你有一个sql 2008并且想测试2005,你可以设置兼容模式为2005,这也适用。

您发布的sql语句想要在您的值部分中使用子查询。这不适用于sql2005并产生错误。如果您在2005年需要此功能,请创建一个标量函数,例如并用它来代替。

编辑: 那么,如果你想将数据插入到使用SQL都没有VALUES语句表,你可以做这样的:

CREATE TABLE #Tmp 
(
    NoOfMembers int, 
    AverageAge int 
) 

INSERT INTO #Tmp(NoOfMembers,AverageAge)  
SELECT COUNT(*), AVG(CONVERT(int,Age)) 
FROM Customer WHERE Confirmed = 1 

SELECT * FROM #Tmp 
+0

Thanx为您快速回答@YvesR我已设置兼容模式2005年在SQL 2008中,但它仍然运行此查询。如何克服这一点,因为你也提到它不会在SQL 2005中执行,但它仍然在我的情况下正常工作。 – ovais 2013-03-14 06:50:00

+0

如果我在2005年运行你的查询它失败,因为子选择查询不支持在这里,在2008年所有正常工作。在2005年,你可以使用标量函数。 – YvesR 2013-03-14 07:28:49

+0

感谢您的回复。我知道了:) – ovais 2013-03-14 07:30:38

0

Well this is how you can make it work on SQL Server 2005 .

CREATE TABLE #Tmp 
(
    NoOfMembers int, 
    AverageAge int 
) 

insert into #Tmp(NoOfMembers,AverageAge)  
    (Select Count(*), AVG(CONVERT(int,Age)) From Customer where Confirmed = 1) 

select * From #Tmp 
+0

“在这种情况下不允许子查询,只允许标量表达式。”这是我在sql server 2005中运行这个查询时得到的错误。我的问题不是关于在sql server 2005中的工作,而是在sql 2008中打开2005兼容性的选项。 – ovais 2013-03-14 07:18:19

+0

我不小心添加了一个')'...尝试这现在...它会工作......它在我的2005年实例工作。 – 2013-03-14 07:22:26

+0

相同的错误:(在2005年不允许子查询如果你想这只是尝试声明一个变量,并设置它的值,然后插入表:) – ovais 2013-03-14 07:26:15

相关问题