Jak*_*nop 10 sql db2 ibm-midrange
我有一张contracts桌子:
contractId date price partId
1 20120121 10 1
2 20110130 9 1
3 20130101 15 2
4 20110101 20 2
Run Code Online (Sandbox Code Playgroud)
合同最大的date是有效合同(不要责怪我,我责备创建xpps)
我需要创建查询以仅查看活动合同(每个部分一个合同,具有最高日期的合同).
所以查询的结果应该是这样的:
contractId date price partId
1 20120121 10 1
3 20130101 15 2
Run Code Online (Sandbox Code Playgroud)
我在这里没有想法,我尝试自己加入表,我尝试了聚合功能,但我无法弄明白.如果有人有任何想法,请与我分享..
Joh*_*Woo 16
这将适用于几乎所有RDBM,
SELECT a.*
FROM tableName A
INNER JOIN
(
SELECT partID, MAX(date) maxDate
FROM tableName
GROUP BY partID
) B on a.partID = b.partID AND
a.date = b.maxDate
Run Code Online (Sandbox Code Playgroud)
如果您的RDBMS支持Window Function,
SELECT contractId ,date, price,partId
FROM
(
SELECT contractId ,date, price,partId,
ROW_NUMBER() OVER (PARTITION BY PartID
ORDER BY date DESC) rn
FROM tableName
) s
WHERE rn = 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16771 次 |
| 最近记录: |