2016-10-04 3 views
1

Я пытаюсь построить круговую диаграмму с данными, предоставленными из таблицы SQL. В результате моего запроса, как следующее:Создание круговой диаграммы из таблицы SQL

Total A B C  D  E  F 
11005 0 1485 3667 2665 2579 609 

Проблема заключается в том, что у меня есть много «серии», который содержит только один данные для каждого. Я думаю, что мне нужно построить только одну «серию», чтобы отображать круговую диаграмму. Мой код:

Dim RequeteByTpe As String = "SELECT COUNT(*) as Total, 
Sum(CASE 
    WHEN [Type] = 'A' THEN 1 
    ELSE 0 
    END) A, 
    Sum(CASE 
    WHEN [Type] = 'B' THEN 1 
    ELSE 0 
    END) B, 
    Sum(CASE 
    WHEN [Type] = 'C' THEN 1 
    ELSE 0 
    END) C, 
    Sum(CASE 
    WHEN [Type] = 'D' THEN 1 
    ELSE 0 
    END) D, 
Sum(CASE 
    WHEN [Constructeur] = 'E' THEN 1 
    ELSE 0 
    END) E, 
Sum(CASE 
    WHEN [Constructeur] = 'F' THEN 1 
    ELSE 0 
    END) F   
From DBase.dbo.MyTable" 

    Dim DA As New SqlDataAdapter(RequeteByType, ConnexionMyBase) 
    Dim DS As New DataSet() 
    DAConstC.Fill(DS, "ByType") 

    Dim ChartType As New Chart 

    Dim ChartArea2 As New ChartArea() 

    ChartConstC.ChartAreas.Add("ChartArea2") 

    ChartConstC.ChartAreas(0).Area3DStyle.Enable3D = True 

    Dim Series21 As Series = New Series("A") 
    Dim Series22 As Series = New Series("B") 
    Dim Series23 As Series = New Series("C") 
    Dim Series24 As Series = New Series("D") 
    Dim Series25 As Series = New Series("E") 
    Dim Series26 As Series = New Series("F") 

    Series21.ChartArea = "ChartArea2" 
    Series22.ChartArea = "ChartArea2" 
    Series23.ChartArea = "ChartArea2" 
    Series24.ChartArea = "ChartArea2" 
    Series25.ChartArea = "ChartArea2" 
    Series26.ChartArea = "ChartArea2" 

    ChartByType.DataSource = DS.Tables("ByType") 

    ChartByType.Series.Add(Series21) 
    ChartByType.Series.Add(Series22) 
    ChartByType.Series.Add(Series23) 
    ChartByType.Series.Add(Series24) 
    ChartByType.Series.Add(Series25) 
    ChartByType.Series.Add(Series26) 

    ChartByType.Series(0).YValueMembers = "A" 
    ChartByType.Series(1).YValueMembers = "B" 
    ChartByType.Series(2).YValueMembers = "C" 
    ChartByType.Series(3).YValueMembers = "D" 
    ChartByType.Series(4).YValueMembers = "E" 
    ChartByType.Series(4).YValueMembers = "F" 

    ChartByType.Titles.Add("Type proportions") 
    ChartByType.Titles(0).Font = New Font("Arial", 12, FontStyle.Regular) 

    ChartByType.Titles(0).Alignment = System.Drawing.ContentAlignment.TopCenter 

    ChartByType.Location = New System.Drawing.Point(15, 45) 

    ChartByType.Size = New System.Drawing.Size(760, 260) 

    Me.Controls.Add(ChartByType) 

Я не знаю, если я должен изменить свой SQL запрос, чтобы получить другой тип данных или, если есть возможность исправить это с каким-либо способом атрибуции данных или другого. Кто-нибудь может помочь?

+0

Какой результат вы получаете, и какой результат вы хотите получить вместо этого? –

+0

@TabAlleman, в настоящее время я могу отображать только диаграмму типа «бар», и я хочу отобразить круговую диаграмму с пропорциями значений A, B, C, D, E, F. – Elhendriks

ответ

1

вместо столбцов, нужна строки ...

, а не положить A, B, C в своей собственной колонке,
общего каждый построчно

пример SQL ...

select [Type], count(*) as Total From DBase.dbo.MyTable group by [Type] 

я заметил, есть две колонки в case заявлении,
можно union результаты вместе, если это необходимо ...

select [Type] as Label, count(*) as Total From DBase.dbo.MyTable group by [Type] 
union all 
select [Constructeur] as Label, count(*) as Total From DBase.dbo.MyTable group by [Constructeur] 
Смежные вопросы