任何人都可以帮助我在SQL Server中使用SQL

时间:2014-10-18 13:43:32

标签: sql-server-2008

我有三张桌子 - TableA,TableB&表C。 TableC是TableA& amp;的合并。表B。
表格结构如下:

表A
SID Fname Lname工作等级EndDate
101 Rosy Maria Doctor A3 06/10/2009
102 Shane Watson经理A1 21/02/2010
103 George Michael Lawyer A5 11/04/2015
104 Stella Kim老师A2 30/09/2007
105 Amanda Lee会计师A4 15/08/2012

表B
SID Dept Grade EndDate
102财务A4 19/05/2012
103法律A1 28/02/2008

表C
SID Fname Lname Job Dept Grade EndDate
101 Rosy Maria Doctor NULL A3 06/10/2009
102 Shane Watson财务经理A4 19/05/2012
103 George Michael Lawyer法律A5 11/04/2015
104 Stella Kim老师NULL A2 30/09/2007
105 Amanda Lee会计师NULL A4 15/08/2012

规则: 1. TableA.SID = TableB.SID
2. TableC.EndDate =来自TableA& amp;的联合记录中最早的EndDate日期。表B
3. TableC.Grade =来自TableA&的联合记录的最早EndDate日期的等级。表B

我在TableA& amp; TableB获取TableC的结果但无法获得正确的结果。那么请你帮我使用上面的规则使用密钥SID连接表A和表B.

由于

1 个答案:

答案 0 :(得分:0)

使用ID字段SID加入两个表A和表B,并在SELECT列表中使用CASE语句,如

SELECT 
A.SID, 
A.FNAME,
A.LNAME,
A.JOB,B.DPT
CASE WHEN (A.ENDDATE > B.ENDDATE) THEN A.ENDDATE ELSE B.ENDDATE END 'ENDDATE',
CASE WHEN (A.ENDDATE > B.ENDDATE) THEN A.GRADE ELSE B.GRADE END 'GRADE' 

FROM TABLEA A
JOIN TABLEB B
ON A.SID = B.SID