回答編集履歴

1

追記

2018/08/15 11:22

投稿

退会済みユーザー
test CHANGED
@@ -39,3 +39,291 @@
39
39
  Chart Samples
40
40
 
41
41
  [http://surferonwww.info/BlogEngine/post/2016/02/14/chart-samples.aspx](http://surferonwww.info/BlogEngine/post/2016/02/14/chart-samples.aspx)
42
+
43
+
44
+
45
+ **【追記】**
46
+
47
+
48
+
49
+ 質問に対する私のコメントで、
50
+
51
+
52
+
53
+ > PIVOT 関係演算子を利用してクロス集計と書きましたが SUM 句を使ってできるかもしれません。ただし、CSV + ADO.NET + JET で可能かどうかは分かりませんが。SQL Server を使った場合の例を回答欄に書いておきます。
54
+
55
+
56
+
57
+ と書きましたが、それを以下に書いておきます。
58
+
59
+
60
+
61
+ 以下の記事は積み上げ棒グラフ (SeriesChartType.StackedColumn) ですが、それを普通の棒グラフ (SeriesChartType.Column) にしたものが質問者さんが望む形のものになると思います。
62
+
63
+
64
+
65
+ [ASP.NET]チャート・コントロールで積み上げ棒グラフを作成するには?[3.5、C#、VB]
66
+
67
+ [http://www.atmarkit.co.jp/fdotnet/dotnettips/1004aspchartstack/aspchartstack.html](http://www.atmarkit.co.jp/fdotnet/dotnettips/1004aspchartstack/aspchartstack.html)
68
+
69
+
70
+
71
+ 以下のコードで望む形になると思います。
72
+
73
+
74
+
75
+ ```
76
+
77
+ using System;
78
+
79
+ using System.Collections.Generic;
80
+
81
+ using System.ComponentModel;
82
+
83
+ using System.Data;
84
+
85
+ using System.Drawing;
86
+
87
+ using System.Linq;
88
+
89
+ using System.Text;
90
+
91
+ using System.Threading.Tasks;
92
+
93
+ using System.Windows.Forms;
94
+
95
+ using System.Data.SqlClient;
96
+
97
+ using System.Windows.Forms.DataVisualization.Charting;
98
+
99
+
100
+
101
+ namespace WindowsFormsChart
102
+
103
+ {
104
+
105
+ public partial class Form2 : Form
106
+
107
+ {
108
+
109
+ public Form2()
110
+
111
+ {
112
+
113
+ InitializeComponent();
114
+
115
+ }
116
+
117
+
118
+
119
+ private DataTable CreateDataTable()
120
+
121
+ {
122
+
123
+ string connString =
124
+
125
+ @"Data Source=(local)\sqlexpress;Initial Catalog=Database;Integrated Security=True";
126
+
127
+ string selectQuery =
128
+
129
+ @"SELECT
130
+
131
+ Month,
132
+
133
+ SUM(CASE WHEN Name = N'三吉' THEN Sales ELSE 0 END) AS 三吉,
134
+
135
+ SUM(CASE WHEN Name = N'春日' THEN Sales ELSE 0 END) AS 春日,
136
+
137
+ SUM(CASE WHEN Name = N'東雲' THEN Sales ELSE 0 END) AS 東雲,
138
+
139
+ SUM(CASE WHEN Name = N'府中' THEN Sales ELSE 0 END) AS 府中,
140
+
141
+ SUM(CASE WHEN Name = N'広島' THEN Sales ELSE 0 END) AS 広島
142
+
143
+ FROM Shop GROUP BY Month";
144
+
145
+
146
+
147
+ using (SqlConnection connection = new SqlConnection(connString))
148
+
149
+ {
150
+
151
+ SqlDataAdapter adapter = new SqlDataAdapter();
152
+
153
+ adapter.SelectCommand = new SqlCommand(selectQuery, connection);
154
+
155
+ DataTable table = new DataTable();
156
+
157
+ adapter.Fill(table);
158
+
159
+ return table;
160
+
161
+ }
162
+
163
+ }
164
+
165
+
166
+
167
+ private void Form2_Load(object sender, EventArgs e)
168
+
169
+ {
170
+
171
+ Chart chart = new Chart()
172
+
173
+ {
174
+
175
+ Name = "chart1",
176
+
177
+ Width = 600,
178
+
179
+ DataSource = CreateDataTable()
180
+
181
+ };
182
+
183
+
184
+
185
+ this.Controls.Add(chart);
186
+
187
+
188
+
189
+ Legend legend = new Legend()
190
+
191
+ {
192
+
193
+ DockedToChartArea = "ChartArea1",
194
+
195
+ IsDockedInsideChartArea = false,
196
+
197
+ Name = "Legend1"
198
+
199
+ };
200
+
201
+ chart.Legends.Add(legend);
202
+
203
+
204
+
205
+ Series series = new Series()
206
+
207
+ {
208
+
209
+ Name = "三吉",
210
+
211
+ ChartType = SeriesChartType.Column,
212
+
213
+ Legend = "Legend1",
214
+
215
+ XValueMember = "Month",
216
+
217
+ YValueMembers = "三吉"
218
+
219
+ };
220
+
221
+ chart.Series.Add(series);
222
+
223
+
224
+
225
+ series = new Series()
226
+
227
+ {
228
+
229
+ Name = "春日",
230
+
231
+ ChartType = SeriesChartType.Column,
232
+
233
+ Legend = "Legend1",
234
+
235
+ XValueMember = "Month",
236
+
237
+ YValueMembers = "春日"
238
+
239
+ };
240
+
241
+ chart.Series.Add(series);
242
+
243
+
244
+
245
+ series = new Series()
246
+
247
+ {
248
+
249
+ Name = "東雲",
250
+
251
+ ChartType = SeriesChartType.Column,
252
+
253
+ Legend = "Legend1",
254
+
255
+ XValueMember = "Month",
256
+
257
+ YValueMembers = "東雲"
258
+
259
+ };
260
+
261
+ chart.Series.Add(series);
262
+
263
+
264
+
265
+ series = new Series()
266
+
267
+ {
268
+
269
+ Name = "府中",
270
+
271
+ ChartType = SeriesChartType.Column,
272
+
273
+ Legend = "Legend1",
274
+
275
+ XValueMember = "Month",
276
+
277
+ YValueMembers = "府中"
278
+
279
+ };
280
+
281
+ chart.Series.Add(series);
282
+
283
+
284
+
285
+ series = new Series()
286
+
287
+ {
288
+
289
+ Name = "広島",
290
+
291
+ ChartType = SeriesChartType.Column,
292
+
293
+ Legend = "Legend1",
294
+
295
+ XValueMember = "Month",
296
+
297
+ YValueMembers = "広島"
298
+
299
+ };
300
+
301
+ chart.Series.Add(series);
302
+
303
+
304
+
305
+ ChartArea chartArea = new ChartArea()
306
+
307
+ {
308
+
309
+ Name = "ChartArea1",
310
+
311
+ AxisY = new Axis() { Title = "売上高" },
312
+
313
+ AxisX = new Axis() { Title = "売上月" }
314
+
315
+ };
316
+
317
+ chart.ChartAreas.Add(chartArea);
318
+
319
+ }
320
+
321
+ }
322
+
323
+ }
324
+
325
+ ```
326
+
327
+
328
+
329
+ ![イメージ説明](49ccfb0db46774ab7c76d95c6a70a81f.jpeg)