Sql server SQL Server查询出错

Sql server SQL Server查询出错,sql-server,Sql Server,我想从内部子查询中选择列TeamProjectNodeName&TestPlanName。内部查询在从视图获取结果时运行得非常好。但是当我运行整个查询时,我得到了下面的错误,如下所示- 附近的语法不正确 请帮我做同样的事情 这是我的问题- select x.TeamProjectProjectNodeName, x.TestPlanName from (select TeamProjectProjectNodeName, TestPlanName,Resu

我想从内部子查询中选择列TeamProjectNodeName&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

谢谢。

将order by从子查询中带出,并按如下方式命名计数列:

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语法更改为@BlueFoots建议的NOT NULL,因为我认为这是您实际需要的。

将order by从子查询中带出来,并将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语法更改为@bluefeet建议的不为NULL,因为我认为这是您实际需要的

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并且计数应具有别名,否则内部select中不能有order by

给你:

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并且计数应具有别名,否则内部select中不能有order by

我建议为您的计数提供一个别名和group by AGGRATE函数,以避免出现错误

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

我建议为您的计数提供一个别名和group by AGGRATE函数,以避免出现错误

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

有几个问题,如果您自己运行子查询,它会运行吗?在现有查询中,从子查询中删除order by并在计数上放置别名。您的意思是使用null还是希望不为null?resultoutcom是什么数据类型?resultoutcom是varcharA几个问题,如果您自己运行子查询,它会运行吗?在现有查询中,从子查询中删除order by并在计数上放置别名。您的意思是使用null还是希望不为null?什么数据类型是ResultToutName?ResultToutName是VARCHAR您可能希望从子查询中删除order by:您可以将其与100%的顶级配置一起使用。但这有用吗-是的,我同意这是一种可怕的做法。您可能希望从子查询中删除order by:您可以将其与100%的顶级配置一起使用。但这有用吗-是的,我不得不承认这是一种可怕的做法。我建议可能会更改TestPlanName“NULL”或做一个注释,将TestPlanName“NULL”更改为TestPlanName不为NULL。如果他们真的在测试null。第一个将不起作用,除非他们实际将null存储为字符串。我建议可能会更改TestPlanName“null”或做一个注释,以将TestPlanName“null”更改为TestPlanName不为null。如果他们真的在测试null。第一种方法不起作用,除非它们实际将null存储为字符串。