我有两张桌子并输出
用于获取输出的SQL是
SELECT t.empID, t.timesheet, r.Rate AS RateBilled
FROM Rates AS r, timesheet AS t
WHERE (((r.empid)=t.empid) And ((t.timeSheet)>=r.promotionDate))
GROUP BY t.empID, t.timesheet, r.Rate , r.promotiondate
HAVING (((r.promotionDate)=Max([r].[promotionDate])));
我的问题是输出表的第5行和第7行也应该在Ratebilled中使用$ 15(因为emp 01的促销日期可能是/ 1),但它似乎仍然使用最初的Jan-1速率。任何帮助表示赞赏。
答案 0 :(得分:1)
select m.*, r2.rate from
(SELECT t.empID, t.timesheet,
max(r.promotiondate) as promotiondate FROM timesheet AS t left join
rates r on r.empid=t.empid And t.timeSheet>=r.promotionDate
group by t.empid, t.timesheet) m
inner join rates r2 on m.empid=r2.empid and m.promotiondate=r2.promotionDate
答案 1 :(得分:1)
你可以试试这个
select t.empID, t.timesheet
, (select top 1 rate from Rates where Rates.empID = t.empID and Rates.PromotionDate <= t.timesheet order by Rates.PromotionDate desc) as RateBilled
from timesheet as t
希望能帮助你。