【问题标题】:SQL Server grouping column valueSQL Server 分组列值
【发布时间】:2016-11-21 03:48:34
【问题描述】:

我在对表格的列进行分组时遇到问题

Private Sub BindRepeater()
    Dim cn As String = ConfigurationManager.ConnectionStrings("db").ConnectionString
    Using cs As New SqlConnection(cn)
        Using cmd As New SqlCommand("SELECT * from tbl_in_record GROUP BY in_pc_no", cs)
            Using sda As New SqlDataAdapter(cmd)
                Dim dt As New DataTable()
                sda.Fill(dt)
                rptTableIn.DataSource = dt
                rptTableIn.DataBind()
            End Using
        End Using
    End Using
End Sub

显示此错误

选择列表中的列 'tbl_in_record.in_no' 无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

我的桌子是这样的

  in_id      in_pc_no      

  1   abc-def-ghi1-01  
  2   abc-def-ghi1-01  
  3   abc-def-ghi1-01  
 12   abc-def-ghi1-01  
 13   abc-def-ghi1-01  
 14   abc-def-ghi1-01  
 15   abc-def-ghi1-01  

【问题讨论】:

  • 您希望输出是什么样的?
  • 只显示 2 行 101-33X-7104-01 和 101-33X-7014-02 以及其他对应的列值
  • 然后仅将* 替换为in_pc_no* 表示您正在选择 in_id,这也意味着您不能对 in_pc_no 进行分组,而不必对 in_id 进行分组,除非您正在汇总一个字段,而在您的情况下,您没有汇总一个 ID。
  • 啊非常感谢..不知道*不能用于分组
  • 您仍然可以使用*。但是您必须在Group By 语句中使用* 选择表中的所有字段。

标签: asp.net sql-server vb.net


【解决方案1】:

所以,你可以使用:

SELECT DISTINCT in_pc_no FROM tbl_in_record;

SELECT in_pc_no FROM tbl_in_record GROUP BY in_pc_no;

包含的任何其他字段都需要具有一些聚合功能,例如

SELECT in_pc_no, n = Count(in_id) FROM tbl_in_record GROUP BY in_pc_no;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    相关资源
    最近更新 更多