2017-09-06 3 views
0

次の2つのクエリに 'union'を使用するにはどうすればよいですか?または他の解決策がありますか?彼らは正常に実行され、私が期待する結果セットを返します。それらは同じ数の列を持ち(同じ表と同じデータ型を使用します)、case文と 'where'節で異なります。2つの結果セットを同じ列ではなくcase文とwhere句が異なるように結合する方法

SELECT TOP 720 
      ind_first_name AS [First Name], 
      ind_last_name AS [Last Name], 
      cst_recno AS [Member ID], 
      cst_eml_address_dn AS [Email Address], 
      adr_city AS City, 
      adr_state AS [State], 
      adr_country AS Country, 
      cst_org_name_dn AS Company, 
      cst_ixo_title_dn AS [Job Title], 
CASE 
WHEN mem_member_product LIKE '%Stud%' 
     THEN 'Associate Student' 
ELSE 'Exclude' 
END AS [Member Type] 
    FROM co_individual 
    INNER JOIN co_individual_ext ON ind_cst_key_ext = ind_cst_key 
    INNER JOIN co_customer ON cst_key = ind_cst_key 
     AND ind_delete_flag=0 
     AND ind_deceased_flag=0 
    LEFT JOIN co_customer_x_address ON cst_cxa_key = cxa_key 
    LEFT JOIN co_address ON adr_key = cxa_adr_key 
    LEFT JOIN vw_client_uli_member_type ON cst_key = mem_cst_key 
    WHERE mem_member_type IS NOT NULL and mem_expire_date >= 9/7/2017 and mem_member_product LIKE '%Stud%' 
    AND adr_country = N'UNITED STATES' 
    AND ind_deceased_flag != 1 
    AND ind_key_leader_flag_ext != 1 
    AND ind_int_code != N'Staff' 
    AND ind_int_code != N'Spouse' 
    AND ind_int_code != N'Press' 
    order by newid() 


SELECT TOP 80 
      ind_first_name AS [First Name], 
      ind_last_name AS [Last Name], 
      cst_recno AS [Member ID], 
      cst_eml_address_dn AS [Email Address], 
      adr_city AS City, 
      adr_state AS [State], 
      adr_country AS Country, 
      cst_org_name_dn AS Company, 
      cst_ixo_title_dn AS [Job Title], 
CASE 
WHEN Mem_member_type in ('Full Under 35 Sustaining','Full Member') and ind_age_cp <= '35' 
     THEN 'Full Member Under 35' 
ELSE 'Exclude' 
END AS [Member Type] 
    FROM co_individual 
    INNER JOIN co_individual_ext ON ind_cst_key_ext = ind_cst_key 
    INNER JOIN co_customer ON cst_key = ind_cst_key 
     AND ind_delete_flag=0 
     AND ind_deceased_flag=0 
    LEFT JOIN co_customer_x_address ON cst_cxa_key = cxa_key 
    LEFT JOIN co_address ON adr_key = cxa_adr_key 
    LEFT JOIN vw_client_uli_member_type ON cst_key = mem_cst_key 
    WHERE mem_member_type IS NOT NULL and mem_expire_date >= 9/7/2017 and mem_member_type in ('Full Under 35 Sustaining','Full Member') and ind_age_cp <= '35' 
    AND adr_country = N'UNITED STATES' 
    AND ind_deceased_flag != 1 
    AND ind_key_leader_flag_ext != 1 
    AND ind_int_code != N'Staff' 
    AND ind_int_code != N'Spouse' 
    AND ind_int_code != N'Press' 
     order by newid() 

ありがとうございます。あなただけの、2つのクエリの間のUNIONを入れ括弧で全体を包んで、それに別名を与え、そこから選択することができるはず

+1

も何が起こりますか? – ADyson

答えて

0

:ときに、組合それら

Select * from 
(
SELECT TOP 720 
     ind_first_name AS [First Name], 
     ind_last_name AS [Last Name], 
     cst_recno AS [Member ID], 
     cst_eml_address_dn AS [Email Address], 
     adr_city AS City, 
     adr_state AS [State], 
     adr_country AS Country, 
     cst_org_name_dn AS Company, 
     cst_ixo_title_dn AS [Job Title], 
     CASE 
      WHEN mem_member_product LIKE '%Stud%' 
       THEN 'Associate Student' 
      ELSE 'Exclude' 
     END AS [Member Type] 
FROM co_individual 
INNER JOIN co_individual_ext ON ind_cst_key_ext = ind_cst_key 
INNER JOIN co_customer ON cst_key = ind_cst_key 
    AND ind_delete_flag=0 
    AND ind_deceased_flag=0 
LEFT JOIN co_customer_x_address ON cst_cxa_key = cxa_key 
LEFT JOIN co_address ON adr_key = cxa_adr_key 
LEFT JOIN vw_client_uli_member_type ON cst_key = mem_cst_key 
WHERE mem_member_type IS NOT NULL and mem_expire_date >= '9/7/2017' and mem_member_product LIKE '%Stud%' 
AND adr_country = N'UNITED STATES' 
AND ind_deceased_flag != 1 
AND ind_key_leader_flag_ext != 1 
AND ind_int_code != N'Staff' 
AND ind_int_code != N'Spouse' 
AND ind_int_code != N'Press' 
order by newid() 

UNION 

SELECT TOP 80 
     ind_first_name AS [First Name], 
     ind_last_name AS [Last Name], 
     cst_recno AS [Member ID], 
     cst_eml_address_dn AS [Email Address], 
     adr_city AS City, 
     adr_state AS [State], 
     adr_country AS Country, 
     cst_org_name_dn AS Company, 
     cst_ixo_title_dn AS [Job Title], 
     CASE 
      WHEN Mem_member_type in ('Full Under 35 Sustaining','Full Member') and ind_age_cp <= '35' 
       THEN 'Full Member Under 35' 
      ELSE 'Exclude' 
     END AS [Member Type] 
FROM co_individual 
INNER JOIN co_individual_ext ON ind_cst_key_ext = ind_cst_key 
INNER JOIN co_customer ON cst_key = ind_cst_key 
    AND ind_delete_flag=0 
    AND ind_deceased_flag=0 
LEFT JOIN co_customer_x_address ON cst_cxa_key = cxa_key 
LEFT JOIN co_address ON adr_key = cxa_adr_key 
LEFT JOIN vw_client_uli_member_type ON cst_key = mem_cst_key 
WHERE mem_member_type IS NOT NULL and mem_expire_date >= 9/7/2017 and mem_member_type in ('Full Under 35 Sustaining','Full Member') and ind_age_cp <= '35' 
AND adr_country = N'UNITED STATES' 
AND ind_deceased_flag != 1 
AND ind_key_leader_flag_ext != 1 
AND ind_int_code != N'Staff' 
AND ind_int_code != N'Spouse' 
AND ind_int_code != N'Press' 
    order by newid() 
) as Unioned_Query 
+0

これはコメントではありません – FLICKER

+1

「ここはあなたのためのコードです」という形ではなく、指示の形で答えがありました。 – Brian

+0

ありがとう、Brian。それは素晴らしい仕事をした。私は私の結果セットの中にいくつかの重複があることに気づいた。すべての固有の[メンバーID]を取得するクエリの上に別個の機能を追加する方法はありますか? @Brian – klima

関連する問題