[英]How to write SQL Query to Union/Join/or Pivot Data into columns from two identical tables based on two key columns in both tables?
我有两个名为 Old_User_Info 和 New_User_Info 的表。 我需要通过加入或联合或他们的旋转方式在屏幕上显示数据,以便它们在输出中显示为一行,例如
表 User_Info_Old:
UserID: 1
UserName: Jon Doe
Address: 2030 Pen St
Phone: 999-111-0990
表 User_Info_New:
UserID: 1
UserName: Jon Doe
Address: 1090 Heming Ln
Phone: 809-290-8765
期望输出:
UserID UserName Old_Address New_Address Old_Phone New_Phone
1 Jon Doe 2030 Pen St 1090 Heming Ln 999-111-0990 809-290-8765
2 Jane Doe 909 Kit Ln 7677 Hawk st 876-990-3232 980-322-3333
..
依此类推,每行的其余记录在列中彼此相邻的旧数据和新数据。
我是使用 Pivot 功能的新手,但我相信它需要一些其他功能,例如 Partition 可能是?
我试图从一张表中选择列,然后将所有与第二张表联合起来。 我有一个外部 Select 将选择最后一列,但我想我遗漏了一些东西。
SElect * from
(
select a.userid, a.username, a.Address as Old_Address, a.phone as Old_Phone
from User_Info_Old a
Union All
SElect b.userid, b.username, b.Address as New_Address, b.phone as New_Phone
from User_Info_New b
)as sub
sort by UserID
期望输出:
UserID UserName Old_Address New_Address Old_Phone New_Phone
1 Jon Doe 2030 Pen St 1090 Heming Ln 999-111-0990 809-290-8765
2 Jane Doe 909 Kit Ln 7677 Hawk st 876-990-3232 980-322-3333
但实际输出低于这不是我想要的:
UserID UserName Old_Address Old_Phone
1 Jon Doe 2030 Pen St 809-290-8765
Jon Doe Jon Doe 999-111-0990 809-290-8765
这是我正在使用的实际查询:
SELECT DISTINCT SEC.MeasureKey as Secondary_Measure_Key, SEC.Subkey as Secondary_Subkey, SEC.MeasureName as Secondary_Measure_Name, if(ISNull(PRI.Denom), Null,PRI.Denom) as Primary_Denom,
if(ISNull(PRI.Num), Null,PRI.Num) as Primary_Num, if(ISNull(PRI.Rate), Null,PRI.Rate) as Primary_Rate, if(ISNull(PRI.Contra), Null,PRI.Contra) as Primary_Contraindications,
SEC.Denom as Secondary_DENOM, SEC.Num as Secondary_NUM, SEC.Rate as Secondary_Rate,
SEC.Contra as Secondary_Contraindications, PRI.Population as Primary_Population, PRI.flowchart as Primary_flowchart, SEC.population as Secondary_Population, SEC.flowchart as Secondary_Flowchart,
SEC.MeasureKey + '.' + SEC.Subkey as VLOOKUP
From
(SELECT --returned 0 rows
DF3.flowchart_name as Flowchart,
DF3.population_name as Population,
Replace(DF3.measure_key,"19","") as MeasureKey,
DF3.measure_short_name as MeasureName,
DF3.submeasure_key as Subkey,
DF3.denominator as Denom,
DF3.numerator as Num,
DF3.contraindications as Contra,
DF3.rate as Rate
From DF3_MNR_PRD.Rate_Summary DF3
where DF3.date = '20190217') SEC
LEFT JOIN
(Select
DF2.flowchart_name as Flowchart,
DF2.population_name as Population,
Replace(DF2.measure_key,"18","") as MeasureKey,
DF2.measure_short_name as MeasureName,
DF2.submeasure_key as Subkey,
DF2.denominator as Denom,
DF2.numerator as Num,
DF2.contraindications as Contra,
DF2.rate as Rate
From DF2_MNR_PRD.Rate_Summary DF2
where DF2.date = '20180320') PRI
On SEC.MeasureKey = PRI.MeasureKey
and SEC.Subkey = PRI.Subkey
where SEC.Population = 'H4527_MCR-ALL_369'
and PRI.Population = 'H4527 MCR-ALL 369'
and SEC.Flowchart = 'PROD_MR_2019_2RUN1_FCR_02152019004120'
and PRI.Flowchart = 'PROD_MR_2018_MAR_3SDS2_FCR_03192018214442'
order by Secondary_Measure_Key, Secondary_Subkey
我认为你只需要一个“左加入”:
select
a.userid, a.username,
a.Address as Old_Address, b.Address as New_Address,
a.phone as Old_Phone, b.phone as New_Phone
from User_Info_Old a
left join User_Info_New b
on a.userid = b.userid
and a.username = b.username
如果您遇到错误,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.