Asp.net 如何在sql中计算平均整数值

Asp.net 如何在sql中计算平均整数值,asp.net,sql,sql-server,vb.net,Asp.net,Sql,Sql Server,Vb.net,我有一些问题需要解决程序中的一个错误。我试图平均一个整数列,但当平均值为0时出现错误。有些东西,,, 例如,我有一个数据: Varchar1 | Varchar2 | Value 1401_1 | 1401_1_1 | 1 1401_1 | 1401_1_2 | 0 1401_1 | 1401_1_3 | 1 1401_1 | 1401_1_4 | 1 1401_1 | 1401_1_5 | 0 然后我用group by varchar1对值求和,结果得到0,

我有一些问题需要解决程序中的一个错误。我试图平均一个整数列,但当平均值为0时出现错误。有些东西,,, 例如,我有一个数据:

Varchar1  |  Varchar2 | Value
1401_1   | 1401_1_1  | 1
1401_1   | 1401_1_2  | 0
1401_1   | 1401_1_3  | 1
1401_1   | 1401_1_4  | 1
1401_1   | 1401_1_5  | 0
然后我用group by varchar1对值求和,结果得到0,它应该是0,6。这是我的密码:

        Dim sqlProducts As String = "SELECT * FROM (SELECT TOP 7 [Varchar1] AS Varchar1_, AVG(CASE WHEN [Type] = 'Something1' THEN Value1 ELSE 0 END) AS Display1, AVG(CASE WHEN [Type] = 'Something2' THEN Value1 ELSE 0 END) AS [Display2] FROM tbl_table GROUP BY [Varchar1] order by [Varchar1] DESC)x ORDER BY Varchar1_ ASC"
我认为我不能从整数中得到十进制的结果,然后我希望它在0.0时显示1,所以它取上限值。有可能怎么做吗

谢谢你的帮助。非常感谢。

您的问题是:

SELECT *
FROM (SELECT TOP 7 [Varchar1] AS Varchar1_, AVG(CASE WHEN [Type] = 'Something1' THEN Value1 ELSE 0 END) AS Display1, AVG(CASE WHEN [Type] = 'Something2' THEN Value1 ELSE 0 END) AS [Display2]
      FROM tbl_table
      GROUP BY [Varchar1]
      order by [Varchar1] DESC
     )x
ORDER BY Varchar1_ ASC
SQL Server进行整数除法,这也适用于
AVG()
。使用浮点数

SELECT *
FROM (SELECT TOP 7 [Varchar1] AS Varchar1_,
             AVG(CASE WHEN [Type] = 'Something1' THEN cast(Value1 as float) ELSE 0 END) AS Display1,
             AVG(CASE WHEN [Type] = 'Something2' THEN cast(Value1 as float) ELSE 0 END) AS [Display2]
      FROM tbl_table
      GROUP BY [Varchar1]
      order by [Varchar1] DESC
     ) x
ORDER BY Varchar1_ ASC
顺便说一下,我发现
else 0
可疑。这将用
0
替换不匹配的值。更典型的情况是,您希望忽略它们:

SELECT *
FROM (SELECT TOP 7 [Varchar1] AS Varchar1_,
             AVG(CASE WHEN [Type] = 'Something1' THEN cast(Value1 as float) END) AS Display1,
             AVG(CASE WHEN [Type] = 'Something2' THEN cast(Value1 as float) END) AS [Display2]
      FROM tbl_table
      GROUP BY [Varchar1]
      order by [Varchar1] DESC
     ) x
ORDER BY Varchar1_ ASC