2017-12-08 34 views
-2

次のようなクエリがあります。問題は結果にあります。その特定の週のTESTToolとReleaseバージョンでグループ化します。だから私は日付の範囲を入力すると、私はテストバージョン、Releaseversion、週番号、TotalNoscripts、その週の合格率と失敗バージョンを取得する必要がありますリリースバージョンとTesttool.Butに基づいて、欲しくない。グループに基づいて結果を検索するクエリ

select TestTool,ReleaseVersion,WeekNo=DATEPART(wk,StartDate),YearNo=DATEPART(year,StartDate), 
totalnoofscripts=count(ScriptName),PassPercentage=round(avg(case when Status='Pass' then 100.0 else 0.0 end), 2), 
FailPercentage=round(avg(case when Status='Fail' then 100.0 else 0.0 end), 2) 
from CitraTestLogging.dbo.TestScript as s1,CitraTestLogging.dbo.TestRun as s2 
where s1.TestRun_ID=s2.ID and StartDate between '2017-12-01' and '2017-12-08' 
group by TestTool,ReleaseVersion,StartDate order by TestTool,ReleaseVersion,StartDate; 

QueryResult TableStructure

+0

こんにちは、歓迎するStackOverflow。ヘルプページ、特に[ここではどのトピックについて聞かせていただけますか?](http://stackoverflow.com/help/on-topic)と[質問しないでください。」](http://stackoverflow.com/help/dont-ask)。さらに重要なことは、[Stack Overflow question checklist](http://meta.stackexchange.com/q/156810/204922)をお読みください。また、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)についても知りたいことがあります。 – Clijsters

+0

どの[DBMS](https://en.wikipedia.org/wiki/DBMS)製品を使用していますか? 「SQL」はクエリ言語であり、特定のデータベース製品の名前ではありません。 –

答えて

0

あなただけのことで、グループからSTARTDATEを削除する必要があります。

オーダーに年と週を追加して、結果を注文しました。 フォーマット済みのSQL!

SELECT TestTool 
    ,ReleaseVersion 
    ,WeekNo = DATEPART(wk, StartDate) 
    ,YearNo = DATEPART(year, StartDate) 
    ,totalnoofscripts = count(ScriptName) 
    ,PassPercentage = round(avg(CASE 
       WHEN STATUS = 'Pass' 
        THEN 100.0 
       ELSE 0.0 
       END), 2) 
    ,FailPercentage = round(avg(CASE 
       WHEN STATUS = 'Fail' 
        THEN 100.0 
       ELSE 0.0 
       END), 2) 
FROM CitraTestLogging.dbo.TestScript AS s1 
    ,CitraTestLogging.dbo.TestRun AS s2 
WHERE s1.TestRun_ID = s2.ID 
    AND StartDate BETWEEN '2017-12-01' 
     AND '2017-12-08' 
GROUP BY TestTool 
    ,ReleaseVersion 
    ,DATEPART(year, StartDate) 
    ,DATEPART(wk, StartDate) 
ORDER BY TestTool 
    ,ReleaseVersion 
    ,DATEPART(year, StartDate) 
    ,DATEPART(wk, StartDate); 
+0

StartdateがgroupByで使用されていない場合、次のエラーが発生します.Column 'CitraTestLogging.dbo.TestRun.StartDate'は、集計関数またはGROUP BY句に含まれていないため、選択リストでは無効です。 –

+0

@MadhusmitaMohanty - 更新されたクエリを試してみてください。私はWeekNoとYearNoを関数に置き換えました。 – Ramesh

+0

はい、それは今今私が望むように集計を取得します。おかげで! –