2017-12-19 7 views
0

月の日数が1から31までの折れ線グラフを表示する必要があります。グラフ上には、1日あたりの平均SMSクレジット数を示す線をプロットする必要がありますすべての月から。私は、Entity FrameworkのとC#を使用していSQL Server:すべての月の平均日数

**STATUS  StatusDate** 
DELIVRD  2015-03-16 11:57:47.000 
DELIVRD  2015-04-16 13:02:57.000 
DELIVRD  2015-03-20 16:02:08.000 
DELIVRD  2015-04-20 16:08:41.000 
DELIVRD  2015-04-20 16:35:11.000 
DELIVRD  2015-03-21 07:43:49.000 
DELIVRD  2015-04-21 08:20:09.000 
DELIVRD  2015-03-21 11:12:00.000 
DELIVRD  2015-04-21 11:20:13.000 
DELIVRD  2015-04-21 12:51:26.000 

それはすべての月などの第16回の平均数を示す線をプロットする必要があります。..

私のデータは、このようになります。 JQuery側では、ブートストラップの管理テーマからChartJSを使用しています。

これは、結果がどのように見えるかされています enter image description here

+1

実際にはSQLサーバーの質問ではありません。レポートパッケージ(Crystal Reports、Excelなど)を選択して使用します。 –

+0

SQLサーバー自体はチャートを作成しません。それを書いてアプリケーションを作成するか、レポートツールを使用する必要があります。 – Magnus

+0

私はこれをWebアプリケーションとして開発し、Crystalレポートは使用していません。私はChartJSでブートストラップテーマを使用しています。 – Orion

答えて

1

ここで選択したレポートのパッケージに供給するための準備ができて、日によってあなたのデータを要約しますクエリです:

WITH t AS(
SELECT 
    CAST(statusdate as date) as da, 
    COUNT(CASE WHEN status = 'DELIVRD' THEN 1 END) as count_delivered, 
    COUNT(CASE WHEN status = 'FAILED' THEN 1 END) as count_failed -- or similar etc 
FROM 
    your_table 
GROUP BY 
    CAST(statusdate as date) 
) 

SELECT 
    da, 
    AVG(count_delivered), 
    AVG(count_failed) 
FROM 
    t 
GROUP BY 
    da 
+0

これは私に別々に日を与えます。私はすべての月の1平均として16番目のすべてを探しています。これをより良く説明するための写真が含まれます。 – Orion

+0

私は結果がどのように見えるかを示すために私の質問を編集しました – Orion

+0

16thsのみ? 16日ではなく、他の日に描いたグラフをどのように描くのでしょうか? –

1

あなたがしたいですかそんな感じ;

select DATEPART(DAY,StatusDateD) as [Day], AVG([count]) from (
select 
cast(StatusDate as date) as StatusDateD, 
count(*) as [count] 
from Table 
group by cast(StatusDate as date) 
) Records group by DATEPART(DAY,StatusDateD) 
order by [Day] 
+0

はい!これは私が探しているものです! :) ありがとうございました。あなたのコードで計画を立てようとします。どうもありがとうございました! – Orion

+0

ようこそ。問題があれば、それを受け入れたものとしてマークしてください。 – lucky

+0

これを行いました。うわー、あなたはあなたの解決策に素早かった。ありがとうございました。 – Orion