获得每个id的最早日期

时间:2011-05-11 19:38:38

标签: sql sql-server-2008

给出以下

table1
id,name
1,test1
2,test2
3,test3

tablePrt
id,date
1,5/1/11
1,5/3/11
3,3/1/11

tableOnl
id,date
1,5/4/11
1,5/15/11

tableSrv
id,date
1,5/13/11
1,5/1/11
2,4/1/11

有什么方法可以从所有3个表中获取每个id的单个最早日期加上table1中id的名称?

所以上面的结果应如下所示:

test1, 5/1/11
test2, 4/1/11
test3, 3/1/11

1 个答案:

答案 0 :(得分:3)

SELECT t1.id, 
       MIN(tbls.DATE) 
FROM   table1 t1 
       INNER JOIN (SELECT id, 
                          DATE 
                   FROM   tableprt 
                   UNION ALL
                   SELECT id, 
                          DATE 
                   FROM   tableonl 
                   UNION ALL
                   SELECT id, 
                          DATE 
                   FROM   tablesrv) tbls 
         ON t1.id = tbls.id 
GROUP  BY t1.id 

注意:不需要在这里做UNION ALL 正如Martin Noted一样即使不需要UNION ALL也可能更快