with cte as (Select
case when u.firstname is null then ep.firstname
when u.insertDate > ep.INSERT_DATE then u.firstname else ep.firstname end
FirstName,
case when u.lastname is null then ep.lastname
when u.insertDate > ep.INSERT_DATE then u.lastname else ep.lastname end
LastName,
u.email as Email,
u.gender as Gender,
u.dob as Birthday,
u.zip as Address_1_ZIP_Postal_Code,
u.city as Address_1_City,
u.street as Address_1_Street_1,
u.province as Address_1_State_Province,
Convert(datetime,[dbo].[returnproperdate]((case when
isnull(u.insertDate,'')<>'' then [dbo].[returnmmddyyyy](insertDate) else
ep.INSERT_DATE end))) as Created,
u.privacy as Privacy
from [dbo].[Users] u
join
[dbo].[EventsParticipated] ep on u.email=ep.EMAIL and u.brand=ep.BRAND
where u.Email='18bonto@gmail.com'
),
finalCTE as (select FirstName, LastName, Email,
(case when gender is null then max(Gender)over (partition by firstname order by Created desc)end) Gender,
Birthday, (case when Address_1_ZIP_Postal_Code is null then max(Address_1_ZIP_Postal_Code)over (partition by firstname order by Created desc)end) Address_1_ZIP_Postal_Code,
(case when Address_1_City is null then max(Address_1_City)over (partition by firstname order by Created desc)end) Address_1_City,
(case when Address_1_Street_1 is null then max(Address_1_Street_1)over (partition by firstname order by Created desc)end) Address_1_Street_1,
(case when Address_1_State_Province is null then max(Address_1_State_Province)over (partition by firstname order by Created desc)end) Address_1_State_Province,
Created ,Privacy,row_number()over(partition by firstname order by Created desc) rn from cte)
select FirstName, LastName, Email, Gender, Birthday, Address_1_ZIP_Postal_Code, Address_1_City, Address_1_Street_1,
Address_1_State_Province, Created,Privacy from finalCTE where rn=1
新查询
select FirstName, LastName, Email, Gender, Birthday,
Address_1_ZIP_Postal_Code, Address_1_City, Address_1_Street_1,
Address_1_State_Province, Created,Privacy from
(
select FirstName, LastName, Email,
(case when gender is null then max(Gender)over (partition by firstname order by Created desc)end) Gender,
Birthday, (case when Address_1_ZIP_Postal_Code is null then max(Address_1_ZIP_Postal_Code)over (partition by firstname order by Created desc)end) Address_1_ZIP_Postal_Code,
(case when Address_1_City is null then max(Address_1_City)over (partition by firstname order by Created desc)end) Address_1_City,
(case when Address_1_Street_1 is null then max(Address_1_Street_1)over (partition by firstname order by Created desc)end) Address_1_Street_1,
(case when Address_1_State_Province is null then max(Address_1_State_Province)over (partition by firstname order by Created desc)end) Address_1_State_Province,
Created ,Privacy,row_number()over(partition by firstname order by Created desc) rn
from [dbo].[JoinedResultUserandEvent])T
where T.rn=1
第三次查询:
select FirstName, LastName, Email, Gender, Birthday, Address_1_ZIP_Postal_Code, Address_1_City, Address_1_Street_1,
Address_1_State_Province, Created,Privacy from
(
select FirstName, LastName, Email,
(case when gender is null then max(Gender)over (partition by firstname,lastname,email)end) Gender,
(case when Birthday is null then max(Birthday)over (partition by firstname,lastname,email)end) Birthday,
(case when Address_1_ZIP_Postal_Code is null then max(Address_1_ZIP_Postal_Code)over (partition by firstname,lastname,email)end) Address_1_ZIP_Postal_Code,
(case when Address_1_City is null then max(Address_1_City)over (partition by firstname,lastname,email)end) Address_1_City,
(case when Address_1_Street_1 is null then max(Address_1_Street_1)over (partition by firstname,lastname,email )end) Address_1_Street_1,
(case when Address_1_State_Province is null then max(Address_1_State_Province)over (partition by firstname,lastname,email )end) Address_1_State_Province,
Created ,Privacy,row_number()over(partition by firstname,lastname,email order by Created desc) rn
from [dbo].[JoinedResultUserandEvent])T
where T.rn=1 and T.Email='18bonto@gmail.com'
合并前:
合并后: