SQL Serverでカウントを取得する方法は?

私はマスターテーブルに関して2つのテーブルからカウントを取得する方法を理解するために多くの試みをしました

私は3つのテーブルを持っている

enter image description here

これらのテーブル値を使用して、私はこの出力を取得する必要があります..

enter image description here

Tried but could get the desired result http://en.wikipedia.org/wiki/Join_(SQL) SQL - LEFT OUTER JOIN and WHERE clause http://forums.devshed.com/oracle-development-96/combination-of-left-outer-join-and-where-clause-383248.html

0
あなたが試したことを表示します。
追加された 著者 John Saunders,
@AnandMohanAwasthi:何を試したのかを示すことなく、質問を投稿するユーザーがたくさんいます。彼らの多くは何も試していません。私はこれがあなたに当てはまると言っているわけではありませんが、もしあなたがしたことを示さなければ、私たちは確信できません(そして、あなたの仕事を他人に任せてほしいと思う人もいます)。
追加された 著者 ypercubeᵀᴹ,
左外部結合、右外部結合、内部結合を試しました...
追加された 著者 AnandMohanAwasthi,
私は与えられた解決策を試しています、正しい答えをマークして投票する時間を与えてください。何があなたをダウングレードするのですか?
追加された 著者 AnandMohanAwasthi,
@ypercube:私は提供されたソリューションを試してみるのに少し忙しかったです。私のプロフィールをチェックすると、これが私の3番目の質問であると簡単に分かります。私は書いたり質問をする前に、私がたくさんの調査をすると言っていますが、とにかく解決策を見つけたと思います。
追加された 著者 AnandMohanAwasthi,
@ypercube:そしてあなたの解決策から帽子..あなたは天才です..
追加された 著者 AnandMohanAwasthi,

2 答え

サブクエリで最初に GROUP BY し、次にメインテーブルに JOIN する必要があります。

SELECT
    a.AttributeId     
  , COALECSE(cntE, 0) AS cntE
  , COALECSE(cntM, 0) AS cntM
FROM
    AttributeMaster AS a
  LEFT JOIN
    ( SELECT
          AttributeId
        , COUNT(*) AS cntE
      FROM 
          EmployeeMaster 
      GROUP BY
          AttributeId
    ) em
      ON  em.AttributeId = a.AttributeId
  LEFT JOIN
    ( SELECT
          AttributeId
        , COUNT(*) AS cntM
      FROM 
          MonthlyDerivedMaster 
      GROUP BY
          AttributeId
    ) mdm
      ON mdm.AttributeId = a.AttributeId
4
追加された
あなたのソリューションをありがとう、それは私を殺していた..ありがとう..
追加された 著者 AnandMohanAwasthi,
SELECT AttributeId,
(SELECT COUNT(Eid) FROM EmployeeMaster WHERE AttributeMaster.AttributeId = EmployeeMaster.AttributeId) as master_eid,
(SELECT COUNT(Eid) FROM MonthnlyDerivedMaster WHERE AttributeMaster.AttributeId = MonthnlyDerivedMaster.AttributeId) as monthly_eid
FROM AttributeMaster
0
追加された