JBTALKS.CC

标题: [SQL]取得最新的薪水资料 ( 紧急 ) [打印本页]

作者: duo8668    时间: 2010-8-3 10:19 AM
标题: [SQL]取得最新的薪水资料 ( 紧急 )
目前我有个tblSalary 来存放员工的最新薪金。
内有 :  intSal , strEmpUid , dblSalAmt , dtDateAdjust , blnIsDel  
然后出席表 tblAtt 内有 : intAttId , strEmpUid , dtDateRecord 等等

请问怎样的 sql query 可以 project out 相等的薪金?  比如说 03 Mar 2010 更动后,相应的薪金会依据dtDateRecord 来连接。 我试了很多方式,就差 Relational Division 不太懂。。。

请各位大大帮帮忙~~~  
作者: TSHsoft    时间: 2010-8-3 08:42 PM
可以放一个example tblSalary table的资料吗?再把你要的结果用talbe呈现出来。
作者: AhPang    时间: 2010-8-3 11:13 PM
本帖最后由 AhPang 于 2010-8-3 11:16 PM 编辑

试试看下面的sql query。不是很清楚你要的东西,我给你的这个可以从attendance看到salary amount base on attendance date。如果是你想要的话,建议你create个view statement 。

select a.*, b.dblSalAmt from tblAtt a
left outer join tblSalary b on a.strEmpUid = b.strEmpUid
where a.dtDateRecord >= b.dtDateAdjust
作者: AhPang    时间: 2010-8-4 10:55 AM
上面那个有duplicate,给你另一个试试看。不过有点乱

select e.*, f.dtDateAdjust, f.dblSalAmt from tblAtt e
left outer join
(select c.strEmpUid, c.dtDateRecord, c.dtDateAdjust, d.dblSalAmt
(select a.strEmpUid,a.dtDateRecord, max(b.dtDateAdjust) as dtDateAdjust from tblAtt a
left outer join tblSalary b on a.strEmpUid = b.strEmpUid
where a.dtDateRecord >= b.dtDateAdjust
group by a.strEmpUid,a.dtDateRecord) c
left outer join tblSalary d on c.strEmpUid=d.strEmpUid and c.dtDateAdjust=d.dtDateAdjust) f
on e.strEmpUid=f.strEmpUid and e.dtDateRecord = f.dtDateRecord
作者: zechs    时间: 2010-8-7 02:29 PM
SELECT intAttID, strEmpUid, dtDateRecord,
(SELECT dblSalAmt FROM tblSalary WHERE tblAtt.strEmpUid = tblSalary.strEmpUid
AND tblSalary.dtDateAdjust <= tblAtt.dtDateRecord ORDER BY tblAtt.dtDateAdjust DESC TOP 1/LIMIT 1)
FROM tblAtt

是这样子吗?
作者: goodday    时间: 2010-8-7 10:49 PM
问题模糊
对不起 , 今天才的空看你的问题 
在MSN 吗??




欢迎光临 JBTALKS.CC (https://www.jbtalks.cc/) Powered by Discuz! X2.5