我在使用SELECT語句時遇到問題我想選擇每個員工ID的最大餘額。我有這樣的桌子。獲取來自不同員工ID的餘額的最大值
EMPLOYE ID | BALANCES
c50-5050 | 100
c50-5050 | 200
**c50-5050 | 300**
c50-5051 | 200
**c50-5051 | 300**
帶星號的那個表示我想從表中選擇什麼。
我實際上需要這個來顯示在VB.net的數據網格視圖。你有關於如何做到這一點的想法?
我在使用SELECT語句時遇到問題我想選擇每個員工ID的最大餘額。我有這樣的桌子。獲取來自不同員工ID的餘額的最大值
EMPLOYE ID | BALANCES
c50-5050 | 100
c50-5050 | 200
**c50-5050 | 300**
c50-5051 | 200
**c50-5051 | 300**
帶星號的那個表示我想從表中選擇什麼。
我實際上需要這個來顯示在VB.net的數據網格視圖。你有關於如何做到這一點的想法?
您可以使用ROW_NUMBER
與OVER
-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,您可以使用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
是比較現代'ROW_NUMBER'方法比老式的'MAX'和'GROUP BY'更受青睞? – AakashM 2013-02-18 10:38:33
@AakashM:它更簡單,更容易維護。您也可以選擇所有列,而不是「GROUP BY」,其中每個柱必須被聚合。請注意,您可以將任何聚合函數與['OVER'-clause](http://msdn.microsoft.com/zh-cn/library/ms189461.aspx) 'MaxBalance = MAX(餘額)超過(由[員工編號]分配)'。 – 2013-02-18 10:41:07
嘗試下面的代碼。
SELECT EMPLOYEE_ID,MAX(balances) FROM TABLE_NAME
GROUP BY EMPLOYEE_ID;
以下查詢
select max(Balances),employe_id from table
group by employe_id
使用的max()
group by
查詢應該這樣做
select max(balance), employe_id
from yourTable
group by employe_id
給一試'SELECT MAX(餘額)FROM MY_TABLE GROUP BY僱工ID' – Dotnet 2013-02-18 10:36:43