1

私は次の表を持っています:

 CodeName    cnt             cnt
CodeNAmeA   1111            2222
CodeNAmeB   3333            4444
CodeNAmeC   5555            6666

このテーブルは、次のクエリの結果です。

(select a.CodeName, a.cnt, b.cnt from

  (select tableA.CodeName, count(*) cnt
   from aaaa..AAAA tableA inner join bbbb..BBBB tableB 
   on tableA.CodeName = tableB.CodeName
   where XXXXXXX
   group by tableA.CodeName) a

   JOIN

  (select tableA.CodeName, count(*) cnt
   from aaaa..AAAA tableA inner join bbbb..BBBB tableB 
   on tableA.CodeName = tableB.CodeName
   where XXXXXXX
   group by tableA.CodeName,tableA.INAMALOCK) b

ON a.CodeName = b.CodeName) 

私はこのような別のテーブルを持っています:

 CodeName        RealName
CodeNAmeA       RealNameA
CodeNAmeB       RealNameB
CodeNAmeC       RealNAmeC

このテーブルは、単純な選択クエリの結果です

select CodeName
from TableCodeReal

私がやりたいのは、次のことを示すことです。

 RealName    cnt     cnt
RealNameA   1111    2222
RealNameB   3333    4444
RealNameC   5555    6666

問題は、aaaa..AAAAまたはbbbb..BBBBに本名がないことです。最初のクエリの結果を取得して、置換を行うにはどうすればよいですか。どうもありがとうございました。最初のクエリで2番目のテーブルを統合する方法について非常に混乱しています。

4

2 に答える 2

2

これがあなたが必要としているものだと思います。メイン クエリをサブ クエリにして、そのCodeName値で 2 番目のテーブルに結合します。次にRealName、2 番目のテーブルから を選択し、値 (これをandcntとしてエイリアスしました) を選択します。acntbcnt

SELECT T.RealName, Q.acnt, Q.bcnt
FROM
(select a.CodeName, a.cnt as acnt, b.cnt as bcnt from

  (select tableA.CodeName, count(*) cnt
   from aaaa..AAAA tableA inner join bbbb..BBBB tableB 
   on tableA.CodeName = tableB.CodeName
   where XXXXXXX
   group by tableA.CodeName) a

   JOIN

  (select tableA.CodeName, count(*) cnt
   from aaaa..AAAA tableA inner join bbbb..BBBB tableB 
   on tableA.CodeName = tableB.CodeName
   where XXXXXXX
   group by tableA.CodeName,tableA.INAMALOCK) b

ON a.CodeName = b.CodeName) Q
INNER JOIN TableCodeReal T ON Q.CodeName = T.CodeName
于 2012-08-10T09:56:03.937 に答える
0

最初のレコード セットを仮想テーブルのように扱うことができます。レコード セットを 2 番目のテーブルに結合すると、必要な結果を得ることができます。

select rt.RealName, vt.cnta, vt.cntb
from TableCodeReal rt
inner join 
(select a.CodeName, a.cnt as cnta, b.cnt as cntb from

  (select tableA.CodeName, count(*) cnt
   from aaaa..AAAA tableA inner join bbbb..BBBB tableB 
   on tableA.CodeName = tableB.CodeName
   where XXXXXXX
   group by tableA.CodeName) a

   JOIN

  (select tableA.CodeName, count(*) cnt
   from aaaa..AAAA tableA inner join bbbb..BBBB tableB 
   on tableA.CodeName = tableB.CodeName
   where XXXXXXX
   group by tableA.CodeName,tableA.INAMALOCK) b

ON a.CodeName = b.CodeName) vt on vt.CodeName = rt.CodeName
于 2012-08-10T09:59:35.933 に答える