1

我在使用 SELECT 语句时遇到问题,我想选择每个员工 ID 的最大余额。我有一张这样的桌子。

EMPLOYE ID |  BALANCES
  c50-5050   |    100
  c50-5050   |    200
**c50-5050   |    300**
  c50-5051   |    200
**c50-5051   |    300**

带星号的表示我想从表中选择什么。

我实际上需要在 VB.net 的数据网格视图中显示它。你知道如何做到这一点吗?

4

4 回答 4

3

使用以下查询

select max(Balances),employe_id from table
group by employe_id
于 2013-02-18T10:36:15.540 回答
2

您可以ROW_NUMBEROVER-clause 一起使用:

WITH X AS
(
   SELECT [EMPLOYE ID], BALANCES,
           RN = ROW_NUMBER() OVER (PARTITION BY [EMPLOYE ID] ORDER BY BALANCES DESC)
   FROM dbo.Table
)
SELECT EMPLOYE ID, BALANCES
FROM X
WHERE RN = 1

我实际上需要在 VB.net 的数据网格视图中显示它。你知道如何做到这一点吗?

使用 ADO.NET,您可以使用 aDataAdapter填充 a DataTable

Dim table = New DataTable()
Dim sql = "see sql above"
Using con = New SqlConnection(yourConnectionString)
    Using da = New SqlDataAdapter(sql, con)
       da.Fill(table)
    End Using
End Using
DataGridView1.DataSource = table
于 2013-02-18T10:34:56.510 回答
1

试试下面的代码。

SELECT EMPLOYEE_ID,MAX(balances) FROM TABLE_NAME
GROUP BY EMPLOYEE_ID;
于 2013-02-18T10:35:42.707 回答
1

查询应该这样max() group by

select max(balance), employe_id
from yourTable
group by employe_id
于 2013-02-18T10:38:23.570 回答