我有三张桌子。这些表不需要有共同的成员。
首先是Opt_Out表:
**MemberId** **Opt_out_Date**
123 12-Jun-2014
234 7-Dec-2014
789 10-March-2014`
其次是Cov_End表:
**MemberId** **Cov_End_Date**
123 30-Jun-2014
234 31-Dec-2014
345 30-Sept-2014
891 30-Oct-2014
第三张表是Decsd_Date表
**MemberId** **Deceased_Date**
123 23-Jun-2014
345 17-Sept-2014
456 23-Jun-2014
678 25-Aug-2014
结果应该是这样的:
**MemberId** **Min_Date**
123 12-Jun-2014
234 7-Dec-2014
345 17-Sept-2014
456 23-Jun-2014
678 25-Aug-2014
789 10-March-2014
891 30-Oct-2014
我希望以最佳方式和单一查询实现此结果。
答案 0 :(得分:2)
您可以使用union all
运算符合并表并将结果用作派生表:
SELECT MemberId, MIN(Date) AS "Min_Date"
FROM (
SELECT MemberId, Cov_End_Date AS "Date" FROM Cov_End
UNION ALL
SELECT MemberId, Opt_out_date AS "Date" FROM Opt_Out
UNION ALL
SELECT MemberId, Deceased_Date AS "Date" FROM Decsd_Date
) src
GROUP BY MemberId
Sample SQL Fiddle(使用MS SQL 2012)