1

私は以下を試していました。私の内部クエリは正常に動作します。しかし、クエリ全体を試すとエラーが発生します。入力してください。

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
4

2 に答える 2

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;
于 2013-06-04T15:45:27.120 に答える
0

あなたのSQLには終わりがないと思います。以下のケースステートメントを参照してください.2つのケースがあります...

    @test int を宣言する
    @テスト= 1を設定

    case when 2=@test then 'Is 2' を選択する

     case when @test = 3 then 'Is 3' else @test end end

于 2013-06-04T15:45:31.093 に答える