我有一组数据,虽然它连接的字段和表的数量非常复杂,但我相信我可以使用此处所需的字段/表来提炼我的问题,以说明这个特定问题。
我有三个表:ClientData、Sources、Prices
这是我当前查询在选择最小值之前的样子:
select c.RecordID, c.Description, s.Source, p.Price, p.Type, p.Weight
from ClientData c
inner join Sources s ON c.RecordID = s.RecordID
inner join Prices p ON s.SourceID = p.SourceID
这会产生以下结果:
RecordID Description Source Price Type Weight
=============================================================
001002003 ABC Common Stock Vendor 1 104.5 Close 1
001002003 ABC Common Stock Vendor 1 103 Bid 2
001002003 ABC Common Stock Vendor 2 106 Close 1
001002003 ABC Common Stock Vendor 2 100 Unknwn 0
111222333 DEF Preferred Stk Vendor 3 80 Bid 2
111222333 DEF Preferred Stk Vendor 3 82 Mid 3
111222333 DEF Preferred Stk Vendor 2 81 Ask 4
我要做的是显示属于同一记录的价格,该记录具有该记录的最小非零权重(因此权重必须大于 0,但它必须是剩余权重中的最小值)。因此,在上面的示例中,对于记录 001002003,我想显示供应商 1 和供应商 2 的收盘价,因为它们的权重均为 1(该记录的最小权重)。但是对于 111222333,我只想显示供应商 3 的出价,因为它的权重 2 是该记录的最小值,非零。我想要的结果是:
RecordID Description Source Price Type Weight
=============================================================
001002003 ABC Common Stock Vendor 1 104.5 Close 1
001002003 ABC Common Stock Vendor 2 106 Close 1
111222333 DEF Preferred Stk Vendor 3 80 Bid 2
关于如何实现这一目标的任何想法?
编辑:这适用于 SQL Server Compact Edition。