表INVLB,表結構:
LB001 char(20)(品號),LB002 char(6)(庫存年月),LB003 numeric(16.6)(月初總數量)
11312021-00, ,201210, 20
11312021-00, ,201211, 30
11312021-00, ,201212, 40
...
為了計算當前的庫存數量,取出最大月份的庫存數,
使用 select top 1 LB001,MAX(LB002) AS LB002,LB003
from INVLB
WHERE LB001='11312021-00'
GROUP BY LB001,LB003
可以實現:
11312021-00, ,201212, 40
.
問題:數據庫裡有很多料號,如何取出每個料號的最大月份的庫存數(不能直接指定當前的最大月份LB002,而是去表裡判斷)
LB001 char(20)(品號),LB002 char(6)(庫存年月),LB003 numeric(16.6)(月初總數量)
11312021-00, ,201210, 20
11312021-00, ,201211, 30
11312021-00, ,201212, 40
11312021-01, ,201210, 20
11312021-01, ,201211, 30
11312021-01, ,201212, 400
...
求結果顯示為
11312021-00, ,201212, 40
11312021-01, ,201212, 400
...
謝謝!
------解决方案--------------------
1你的语句是错的,top 1不排序不一定取出哪条数据
2、如下语句试试
select * from INVLB a
where not exists (
select 1 from INVLB b
where b.LB001 = a.LB001
and b.LB002 > a.LB002
)