用于获取重复记录并在 Gridview 中显示为一行的 SQL 查询
Posted
技术标签:
【中文标题】用于获取重复记录并在 Gridview 中显示为一行的 SQL 查询【英文标题】:SQL Query for Getting a Duplicate Record and Show it in One Row in Gridview 【发布时间】:2017-04-01 21:33:48 【问题描述】:所以我只需要在一行中显示重复记录的数据。
请看图片Record
员工有不止一份工作,但我只需要查看员工的 empno、名字、姓氏、实体和位置,因此我只需要一行记录。
我尝试使用SELECT DISTINCT
,但它不起作用。
这是我的代码
Protected Sub BindUsersGrid()
Dim Con As New SqlConnection
Con = getConn()
Dim ds As DataSet = GetRecord("SELECT DISTINCT MASTERID, USERID, EMPNO, LASTNAME, FIRSTNAME, ENTITY, LOCATION, EMAIL, BDATE, SEX, CONTACT_NO, IS_RESIGNED, LOCALNAME, " & _
"REGION, COUNTRY " & _
"FROM EMP_MASTERTBL " & _
"ORDER BY LASTNAME, FIRSTNAME, MASTERID")
Me.myDataTable = ds.Tables(0)
Me.gvUsers.DataSource = Me.myDataTable
Me.gvUsers.DataBind()
Session("gvData") = myDataTable
End Sub
我的代码可能有什么问题?你能给我其他的想法或示例或其他代码吗?
非常感谢。
【问题讨论】:
我没有发现您的查询有任何问题。这个实际查询的输出是什么?为什么会出错? 这个查询的实际输出是我发布的图像。它显示同一员工的两条记录或两行。我只需要一行我得到的相同员工详细信息。 您实际上希望在结果集中包含哪些 列。您的DISTINCT
应仅提及这些列。我的猜测是,您向我们展示的两条记录没有不同,并且在一列或多列中有所不同(在显示的列中并不相同)。
结果集中我真正想要的列是 Empno、firstname、lastname、entity 和 location。是的,这两条记录在一列中有所不同,即职称。
删除 distinct 关键字并发布查询的实际结果,以便您查看哪些列不相似
【参考方案1】:
当您执行SELECT DISTINCT
时,数据库将返回与所有 列不同的记录。这意味着,如果您想要在 4 列方面不同的记录,但您选择 5,那么您可能会在结果集中获得看似重复的内容。根据您告诉我们的情况,以下查询可能符合您的要求:
SELECT DISTINCT EMPNO, LASTNAME, FIRSTNAME, ENTITY, LOCATION
FROM EMP_MASTERTBL
ORDER BY LASTNAME, FIRSTNAME
【讨论】:
以上是关于用于获取重复记录并在 Gridview 中显示为一行的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
Windows phone 7 - 在 GridView 中重复显示重复的列
从返回类型 DataSet 获取输出并将其显示在 Gridview 中