2017-03-31 49 views
1
select 
u.Resnet_Agent_ID, 
u.First_Name + ' ' + u.Last_Name AS [Agent Name], 
u.Email, 
[Current Membership Level] = CASE 
WHEN u.UserMembershiptType_CodeID = 1 THEN 'Standard' 
WHEN u.UserMembershiptType_CodeID = 2 THEN 'Premium Membership' 
WHEN u.UserMembershiptType_CodeID = 3 THEN 'Pro Plus Membership' 
WHEN u.UserMembershiptType_CodeID = 4 THEN 'Pro Plus Trial' 
WHEN u.UserMembershiptType_CodeID = 5 THEN 'Premium Free Trial' 
WHEN u.UserMembershiptType_CodeID = 6 THEN 'Pro' 
WHEN u.UserMembershiptType_CodeID = 7 THEN 'Pro Plus Comp - Trial' 
ELSE NULL END, 
[Prior Paid Membership Level] = CASE 
WHEN mh.MembershipType_CodeID = 2 THEN 'Premium Membership' 
WHEN mh.MembershipType_CodeID = 3 THEN 'Pro Plus Membership' 
WHEN mh.MembershipType_CodeID = 4 THEN 'Pro Plus Trial' 
WHEN mh.MembershipType_CodeID = 5 THEN 'Premium Free Trial' 
WHEN mh.MembershipType_CodeID = 6 THEN 'Pro' 
WHEN mh.MembershipType_CodeID = 7 THEN 'Pro Plus Comp - Trial' 
ELSE NULL END, mh.Description 
    from amp.dbo.tbl_User u (nolock) 
join amp.dbo.tbl_MembershipHistoryNew mh (nolock) 
    on u.UniversalUserId = mh.AgentUniversalUserId 
where u.IsAgent = 1 and mh.MembershipType_CodeID <> 1 

enter image description hereSQL:只有集團只顯示1會員級別

我怎麼能集團當前的會員級別,只顯示「一個當前的會員級別,只有一個Resnet_Agent_ID,只有一個代理機構名稱,只有一個電子郵件「?

回答

2

一個選項是使用cross apply()來獲取基於某列的最新行,例如, ExpirationDate:

select 
    u.Resnet_Agent_id 
    , [Agent Name]= u.First_Name + ' ' + u.Last_Name 
    , u.Email 
    , [Current Membership Level] = case 
    when u.UserMembershiptType_Codeid = 1 then 'Standard' 
    when u.UserMembershiptType_Codeid = 2 then 'Premium Membership' 
    when u.UserMembershiptType_Codeid = 3 then 'Pro Plus Membership' 
    when u.UserMembershiptType_Codeid = 4 then 'Pro Plus Trial' 
    when u.UserMembershiptType_Codeid = 5 then 'Premium Free Trial' 
    when u.UserMembershiptType_Codeid = 6 then 'Pro' 
    when u.UserMembershiptType_Codeid = 7 then 'Pro Plus Comp - Trial' 
    else null end 
    , [Prior Paid Membership Level] = case 
    when mh.MembershipType_Codeid = 2 then 'Premium Membership' 
    when mh.MembershipType_Codeid = 3 then 'Pro Plus Membership' 
    when mh.MembershipType_Codeid = 4 then 'Pro Plus Trial' 
    when mh.MembershipType_Codeid = 5 then 'Premium Free Trial' 
    when mh.MembershipType_Codeid = 6 then 'Pro' 
    when mh.MembershipType_Codeid = 7 then 'Pro Plus Comp - Trial' 
    else null end 
    , mh.Description 
from amp.dbo.tbl_User u (nolock) 
    cross apply (
    select top 1 
     MembershipType_Codeid 
     , Description 
    from amp.dbo.tbl_MembershipHistoryNew i (nolock) 
    where u.UniversalUserId = i.AgentUniversalUserId 
    order by i.ExpirationDate desc /* order by to get the latest first here */ 
    ) mh 
where u.IsAgent = 1 
    and mh.MembershipType_Codeid <> 1 
+0

你是怎麼知道這個專欄存在沒有我告訴你呢? i.ExpirationDate – IeeTeY

+0

@IeeTeY看起來像是應該在桌面上存在的東西。 – SqlZim

0

它不清楚您是否要包含或排除代碼爲空的成員。 如果你想空,然後使用: 和(mh.MembershipType_Codeid <> 1或mh.MembershipType_Codeid爲null) 以其它方式使用: 和(mh.MembershipType_Codeid <> 1或mh.MembershipType_Codeid NOT NULL)