【发布时间】:2018-05-25 18:38:19
【问题描述】:
所以我正在创建一个饼图来计算一列中的项目数,问题是它也计算空项目,我可以使查询不只计算一列上的空值,它什么也不显示我让它不计算超过 1 列的空值。而当一行在多个列上都有值时,例如第 1 行在违反 1 和违反 2 上有值,饼图中会有一部分将它们都计为新值。
这是我的代码 -
Dim cnn3 As New SqlConnection
Dim cmd3 As New SqlCommand
Dim dr As SqlDataReader
Try
cnn3.ConnectionString = Login.sqlcode
cmd3.Connection = cnn3
Dim tblFields As String = "SELECT count(*) as [Vio] from Violations WHERE Violation1<> '" & "NULL" & "' Group by Violation1, Violation2, Violation3, Violation4, Violation5, Violation6, Violation7, Violation8"
Dim oData As New SqlDataAdapter(tblFields, cnn3)
Dim ds As New DataSet
Dim oCmd As New SqlCommand(tblFields, cnn3)
cnn3.Open()
oData.Fill(ds, "Violations")
cnn3.Close()
Chart1.DataSource = ds.Tables("Violations")
Dim Series1 As Series = Chart1.Series("Series1")
Series1.Name = "Violations"
Chart1.Series(Series1.Name).YValueMembers = "Vio"
Chart1.Size = New System.Drawing.Size(780, 350)
Catch ex As Exception
MessageBox.Show("Error while connecting to SQL Server." & ex.Message)
End Try
我认为问题出在查询中,我试图在这里实现的是饼图显示列违规1-8 的计数,没有空值并且没有组合值。
【问题讨论】:
-
您想要一个值,还是每个特定的列都计数?一个简单的
SELECT Count(Violation1), Count(Violation2) ... Count(Violation7) FROM Violations应该忽略每一列中的任何空值。 -
@CharlesMay 谢谢你的回复,但是我如何在饼图中显示这个,因为我的查询有“as [Vio]”,而且我在图表系列中调用来创建图表,但是根据您的查询,我不知道该怎么做。
-
您需要根据要显示的内容进行更改。我假设您想要一个表示 Violation1、Violation2 等总数的饼图...
Why not SELECT Count(Violation1) AS Violation1...?然后,这将显示您的图例中馅饼的每个“切片”所代表的内容。