【发布时间】:2022-06-28 08:27:49
【问题描述】:
我想写一个 sql 脚本从 2 个表中获取数据,一个是父表,第二个是子表
出价
投标 ID |代码 |日期
1 | H | 2022-05-12
2 |乙| 2022-05-13
投标结果
投标结果 ID |出价 |埃米
12 | 1 | 50
13 | 1 | 20
14 | 2 | 30
投标和投标结果
我想从投标表中获取日期、代码、投标 ID 列 和 BidResultId,来自 BidResult 的 EMI,但想要另一列最小 EMI
从上面的例子中我想获取bidId 1
代码 H,日期 2022-05-12,BidResultId 12,Emi 50 和 Min Emi 介于 50 和 20 之间,即 20
所以我写了以下查询
Select B.BidId,BR.EMI As Installment,
(Select Min(BR.EMI ) from BidResult BR
Inner Join Bid B on B.BidId = BR.BidResultId
where B.BidId = 5) As MinInstallment,
B.Code,
BR.BidResultId,
CONVERT(DATE, B.Date) As BidDate
from Bid B
Inner Join BidResult BR On B.BidId = BR.BidId
where B.BidId= 5 and B.TypeId = 1
除了 BidResult 中该 BidId 的最小 EMI 值外,所有字段都是简单明了的
请检查查询并建议是否有任何修改
【问题讨论】:
-
这有点难以理解。我认为使用派生表而不是“内联”列可能会更好。我会尝试让您开始:选择 B.BidId,BR.EMI 作为分期付款,B.Code,BR.BidResultId,CONVERT(DATE, B.Date) As BidDate from Bid B JOIN (Select Min(BR.EMI)作为 MyMinEmi , BR.BidResultId MyBidResultId 来自 BidResult BR GROUP BY BR.BidResultId) 作为派生1 ON B.BidId = derived1.MyBidResultId 内部加入 BidResult BR 在 B.BidId = BR.BidId 其中 B.BidId= 5 和 B.TypeId = 1
标签: sql sql-server database