费用表
FeeId(PK)managerId amount Type
1 50 100 1
1 50 10000 39
1 50 50000 2
1 50 50000 3
1 50 50000 4
经理表
FeeId(FK)Split managerId
1 70 68
期望的结果:
FeeId managerId amount Type
1 50 30 1
1 68 70 1
1 50 3000 39
1 68 7000 39
1 50 15000 2
1 68 35000 2
1 50 15000 3
1 68 35000 3
1 50 15000 4
1 68 35000 4
这个数据集只是一个记录,我的数据中还有很多 FeeId。交叉连接不会考虑到这一点。我基本上想根据feeId交叉加入每个经理。
然后金额列重新计算为 managerid 68,50 分别为 70,30。
如何对每个子集进行交叉连接:WHERE f.feeId = m.feeId 以获得所需的结果?
由于经理表将收取超过 1 的费用,因此结果不正确的交叉连接示例:
SELECT
f.feeId,
(cast(m.split as decimal) / 100) * f.amount as amount
FROM
dbo.fee f
CROSS JOIN dbo.manager m