从不同的员工ID获取最大的余额值

时间:2013-02-18 10:30:32

标签: sql sql-server sql-server-2008

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

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

带星号的那个表示我想从表中选择的内容。

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

4 个答案:

答案 0 :(得分:2)

您可以ROW_NUMBER使用OVER - 子句:

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,您可以使用DataAdapter填充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

答案 1 :(得分:2)

使用以下查询

select max(Balances),employe_id from table
group by employe_id

答案 2 :(得分:1)

请尝试以下代码。

SELECT EMPLOYEE_ID,MAX(balances) FROM TABLE_NAME
GROUP BY EMPLOYEE_ID;

答案 3 :(得分:1)

max() group by查询应该这样做

select max(balance), employe_id
from yourTable
group by employe_id