3 回答

TA貢獻1828條經(jīng)驗 獲得超6個贊
你可以這樣做GROUP BY LEFT(employeeidno, 4):
SELECT
LEFT(employeeidno, 4) deptcode,
MAX(RIGHT(employeeidno, 7)) empno
FROM employeemasterfile
GROUP BY LEFT(employeeidno, 4)
ORDER BY LEFT(employeeidno, 4)

TA貢獻1780條經(jīng)驗 獲得超1個贊
你可以使用 row_number()
select deptcode,empno from
( select LEFT (employeeidno, 4) deptcode,
RIGHT (employeeidno, 7) empno,
row_number()over(partition by LEFT (employeeidno, 4) ordere by RIGHT (employeeidno, 7) desc)
from employeemasterfile
) a where a.rn=1

TA貢獻1841條經(jīng)驗 獲得超3個贊
據(jù)我了解,聚合應該這樣做。
SELECT left(employeeidno, 4) deptcode,
max(right(employeeidno, 7)) empno
FROM employeemasterfile
GROUP BY left(employeeidno, 4)
ORDER BY left(employeeidno, 4);
編輯:
我會試著解釋一下:
您可以想象GROUP BY left(employeeidno, 4)將記錄集劃分為子集。在每個子集中l(wèi)eft(employeeidno, 4),即deptno是相同的,并且沒有兩個子集具有相同的deptno?,F(xiàn)在在每個子集中max(right(employeeidno, 7))取最大值right(employeeidno, 7)即最大值empno。(ORDER BY empno DESC將結果限制為一行TOP 1也會使您獲得最大值。)然后通過獲取deptno每個子集(即每個子集deptno)的 和最大值 來產(chǎn)生最終結果empno。
- 3 回答
- 0 關注
- 188 瀏覽
添加回答
舉報