我有2张这样的表:
表1:
ID | COMPANY_NAME | Rank | FIRST_REGIST_DATE
1 A 1 2017-09-01
2 B 2 2017-09-05
表2:
ID | COMPANY_NAME | RANK | FIRST_REGIST_DATE
1 A 3 2017-09-03
2 C 4 2017-09-04
我需要使用FIRST_REGIST_DATE和RANK数据来选择公司 如果公司有2个首次注册日期,我们选择较早的日期和RANK 更高 (EX:以上公司A将有第一个日期:2017-09-01)
期望结果将是这样的: A公司 - 等级3 - 日期:2017-09-01
在这种情况下请让我选择
答案 0 :(得分:1)
如果我正确理解了这个问题,那么您有两个包含公司详细信息和首次注册日期的数据表,并且您希望显示最早的第一个注册日期的行。以下查询将对您有所帮助。
SELECT company_name, MIN(fisrt_regist_date)
(
SELECT company_name, fisrt_regist_date
FROM table1
UNION ALL
SELECT company_name, fisrt_regist_date
FROM table2
) tab1
FROM tab1
GROUP BY company_name
上述查询将结合第一个表格和第二个表格的结果,然后向您显示公司的详细信息以及最早的注册日期。
答案 1 :(得分:1)
这在技术上回答了问题,但避免了房间里的大象(哪个ID优先?)。由于两个表都具有可能重叠的ID({B,C}具有ID为2),因此需要定义规则,以确定哪个ID优先于将其他表ID重命名为什么。
Select COMPANY_NAME
,MIN(FIRST_REGIST_DATE) as REGIST_DATE
from (
SELECT *
FROM #table1
UNION ALL
SELECT *
FROM #table2
) t3
Group by COMPANY_NAME
在问题得到解答后,OP不会更改您的问题(通过添加RANK)。 对于您的更改:由@toha
提供 Select COMPANY_NAME
,MIN(FIRST_REGIST_DATE) as REGIST_DATE
,MAX(RANK ) as RANK
from ( SELECT *
FROM #table1
UNION ALL
SELECT *
FROM #table2 ) t3
Group by COMPANY_NAME