我正在尝试下面的内容。我的内部查询工作正常。但是当我尝试整个查询时出现错误。请提供您的意见。
select
x.TeamProjectProjectNodeName,
x.TestPlanName,
(case when x.ResultOutcome in ('Aborted','Error','Failed','Inconclusive','Timeout','Blocked')
then sum(count(x.ResultOutcome)) else 0
as "Failed"
when x.ResultOutcome in ('Passed')
then sum(count(x.ResultOutcome)) else 0
as "Passed"
when x.ResultOutcome in ('Not Executed')
then sum(count(x.ResultOutcome)) else 0
as "Not Run"
END
)
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
这是我从内部查询中得到的 -
TeamProjectProjectNodeName TestPlanName ResultOutcome Total
ACATS Test Automation Aborted 26
ACATS Test Automation Failed 61
这是我正在寻找的最终结果格式 -
TeamProjectProjectNodeName TestPlanName Failed Passed Not_Run
ACATS Test Automation 87 0 0
答案 0 :(得分:3)
嵌套聚合是无效的语法(即(sum(count))
)。根据您现有的查询,您似乎正在尝试按以下方式转动数据:
select
x.TeamProjectProjectNodeName,
x.TestPlanName,
sum(case when x.ResultOutcome in ('Aborted','Error','Failed','Inconclusive','Timeout','Blocked') then 1 else 0 end) as Failed,
sum(case when x.ResultOutcome = 'Passed' then 1 else 0 end) as Passed,
sum(case when x.ResultOutcome = 'Not Executed' then 1 else 0 end) as NotRun
from
(
select
TeamProjectProjectNodeName,
TestPlanName,
ResultOutcome,
count(*) as Total
from [Tfs_Warehouse].[dbo].[TestResultView]
where TestPlanName IS NOT NULL
GROUP BY TeamProjectProjectNodeName, TestPlanName, ResultOutcome
) x
group by x.TeamProjectProjectNodeName, x.TestPlanName
order by TeamProjectProjectNodeName asc, TestPlanName asc;
您应该能够使用以下方法合并此代码:
select
TeamProjectProjectNodeName,
TestPlanName,
sum(case when ResultOutcome in ('Aborted','Error','Failed','Inconclusive','Timeout','Blocked') then 1 else 0 end) as Failed,
sum(case when ResultOutcome = 'Passed' then 1 else 0 end) as Passed,
sum(case when ResultOutcome = 'Not Executed' then 1 else 0 end) as NotRun
from [Tfs_Warehouse].[dbo].[TestResultView]
where TestPlanName IS NOT NULL
GROUP BY TeamProjectProjectNodeName, TestPlanName
order by TeamProjectProjectNodeName asc, TestPlanName asc;
答案 1 :(得分:0)
我认为你的SQL中缺少结尾。请参阅下面的案例陈述,有2个案例......
declare @test int set @test= 1 select case when 2=@test then 'Is 2' else case when @test = 3 then 'Is 3' else @test end end