2017-09-25 9 views
-1

2つのテーブルStorage_1とStorage_2があります。2つのテーブルから一意の名前を選択し、両方に存在する場合はそれぞれに対してカウントを合計します

Storage_1

First Name  Male Count  Female Count 
Ankush    70    10 
Xenia    10    60 
Jacky    25    70 
Vivian    15    05 

Storage_2は

First Name  Male Count   Female Count 
Rahul    50     10 
Maneek    40     25 
Jacky    30     15 
Xenia    05     80 

私はテーブルの両方から、ユニークな名前は、私が男性の数と女性の数の両方のその合計を見たいと思っていることを確認したいです。また、男性の数と女性の数の最初の名前は、他のテーブルには存在しません。

出力を調整する混乱を取り除きたい場合は、それをクリアします。

ファイナルデータベーステーブル:私は本当にこの長い苦労しています

First Name  Male Count Female Count 
Jacky    55    85 
Xenia    15    140 
Ankush    70    10 
Vivian    15    05 
Rahul    50    10 
Maneek    40    25 

。助けてください。回答がSQL Serverの観点から掲載されていると私にとっては役に立ちます。

+0

なぜあなたは、2つのこのような類似したテーブルを持っているのですか? – jarlh

+0

UNION ALLを実行します。 GROUP BYの結果。カウントをSUMします。 – jarlh

+0

こんにちはJarlh、 これらは2つの異なるデータベースから集められたテーブルです。私はそれらを組み合わせて一つにする。それが明確になることを願っています。 –

答えて

0

あなたがここにunion allを使用することができます。 First_Nameの結果でグループ化します。

0

使用union allgroup by

select firstname, 
     sum(male_count) as male_count, 
     sum(female_count) as female_count 
from ((select firstname, male_count, female_count 
     from Storage_1 
    ) union all 
     (select firstname, male_count, female_count 
     from Storage_2 
    ) 
    ) s 
group by firstname; 
+0

トップセレクト句では、male_countとfemale_countはs.male_countとs.female_countにしてください。 –

+0

@学習。 。 。必要に応じて名前を修飾することができます。 'from'節にテーブル/サブクエリーが1つしかないときは、私は思想的ではありません。 –

0

単純に表を連結してNULL変数を渡すことができます。

SELECT 
     COALESCE(S1.First_Name,S2.First_Name), 
     ISNULL(S1.MaleCount,0)+ISNULL(S2.MaleCount,0) As MaleCount, 
     ISNULL(S1.FemaleCount,0)+ISNULL(S2.FemaleCount,0) AS FemaleCount 
FROM Storage1 S1 
FULL OUTER JOIN Storage2 S2 ON S1.First_Name = S2.First_Name 
+0

こんにちはアブドゥカディール、 あなたの答えをありがとう。それは私の概念をより明確にしました。 –

0

あなたはCTEの内側UNION ALLを使用することができ、その後、GROUP BY列[姓]

;WITH CTE_All AS (
    SELECT [First Name], [Male Count], [Female Count] FROM Storage_1 
    UNION ALL 
    SELECT [First Name], [Male Count], [Female Count] FROM Storage_2 
)SELECT 
    [First Name] 
    ,SUM([Male Count]) AS [Male Count] 
    ,SUM([Female Count]) AS [Female Count] 
FROM CTE_All 
GROUP BY [First Name] 
関連する問題