2017-03-31 7 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: Nur Gruppe nur Anzeige 1 Mitgliedschafts-Level

Wie kann ich Gruppe der aktuelle Mitgliedschaftsstufe nur Anzeige „eine aktuelle Mitgliedschaft Ebene, nur ein Resnet_Agent_ID nur ein Agent Namen, nur eine E-Mail "?

Antwort

2

Eine Option verwendet cross apply(), um die letzte Zeile basierend auf einer Spalte zu erhalten, z. 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

Wie haben Sie Wissen Sie, dass diese Spalte existiert hat, ohne dass ich Ihnen davon erzählt habe? i.ExpirationDate – IeeTeY

+0

@IeeTeY Scheint wie etwas, das auf diesem Tisch existieren sollte. – SqlZim

0

Es ist unklar, ob Sie Mitglieder mit einem Code als null einschließen oder ausschließen möchten. wenn Sie NULL-Werte dann wollen verwenden: und (mh.MembershipType_Codeid <> 1 oder mh.MembershipType_Codeid ist null) sonst verwenden: und (mh.MembershipType_Codeid <> 1 oder mh.MembershipType_Codeid nicht null)