2017-03-31 10 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会員レベル

どのように私はグループのみ表示「1つの現在の会員レベルに現在の会員レベル、一つだけResnet_Agent_ID、唯一のエージェント名、唯一の電子メールへ"?

答えて

2

1つのオプションは、一部の列に基づいて最新の行を取得するために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

コードがnullのメンバーを含めるか除外するかは不明です。 あなたはヌルが、その後使用する場合: と(mh.MembershipType_Codeid <> 1またはmh.MembershipType_Codeidがnull) そうでない場合は使用します。 と(mh.MembershipType_Codeid <> 1かmh.MembershipType_Codeid NOT NULL)

関連する問題