SQL Server查询出错

时间:2013-06-04 15:03:23

标签: sql-server

我想选择列TeamProjectProjectNodeName&来自内部子查询的TestPlanName。内部查询在从视图中获取结果时运行完全正常。但是当我按如下所示运行整个查询时,我得到以下错误 -

  

')'附近的语法不正确。

请帮助我。

这是我的查询 -

select 
    x.TeamProjectProjectNodeName, x.TestPlanName
from 
    (select 
         TeamProjectProjectNodeName, TestPlanName,ResultOutcome, count(ResultOutcome) 
     from [Tfs_Warehouse].[dbo].[TestResultView] 
     where TestPlanName <> 'NULL'
     GROUP BY TeamProjectProjectNodeName, TestPlanName, ResultOutcome
     order by TeamProjectProjectNodeName asc, TestPlanName asc) x

感谢。

3 个答案:

答案 0 :(得分:4)

从子查询中提取订单,并将count列命名为:

select 
   x.TeamProjectProjectNodeName,
   x.TestPlanName,
   x.Total
from (select 
         TeamProjectProjectNodeName,
         TestPlanName,
         ResultOutcome, 
         count(*) as Total 
      from [Tfs_Warehouse].[dbo].[TestResultView] 
      where TestPlanName IS NOT NULL
      GROUP BY TeamProjectProjectNodeName, TestPlanName, ResultOutcome
     ) x
order by TeamProjectProjectNodeName asc, TestPlanName asc 

我已将WHERE语法更改为IS NOT NULL,正如@bluefeet建议的那样,因为我认为这是您实际需要的。

答案 1 :(得分:1)

你走了:

select x.TeamProjectProjectNodeName,x.TestPlanName
from (select top 100 percent TeamProjectProjectNodeName,TestPlanName,ResultOutcome, count(ResultOutcome) SomeAlias from [Tfs_Warehouse].[dbo].[TestResultView] 
where TestPlanName <> 'NULL'
GROUP BY TeamProjectProjectNodeName, TestPlanName, ResultOutcome
order by TeamProjectProjectNodeName asc, TestPlanName asc) x

除非您指定top并且count()应该有别名,否则您的内部选择中不能有订单。

答案 2 :(得分:0)

我建议您为count()一个别名和group by汇总函数以避免错误

select x.TeamProjectProjectNodeName,x.TestPlanName
from (select TeamProjectProjectNodeName,TestPlanName,ResultOutcome, count(ResultOutcome) as total from [Tfs_Warehouse].[dbo].[TestResultView] 
where TestPlanName <> 'NULL'
GROUP BY TeamProjectProjectNodeName, TestPlanName, ResultOutcome) x