0

列の 2 つのテーブル間に結合を作成し、それらが結合されているフィールドの数を表示する必要があります

たとえば、ここで「ビジネス」は、参加したい私のキーです。

最初のクエリは

select 
    [business], count(*) as total from dimhexpand group by [business] 

そして、次のような結果が得られます。

DA  54100

Dual    6909

ECM 1508

Flex    15481

別のクエリは次のとおりです。

select business, count (*) from LODG
group by business order by business

クエリの結果は次のとおりです。

DA  100

Dual    909

ECM 508

Flex    15481

これら2つのテーブルを結合してデータを返し、次のようなものを表示したい

**dimhexpand.business dimhexpand.count LODG.Count**
DA          54100       100 

Dual            6909        909

ECM         1508        508

Flex            15481       151481
4

2 に答える 2

0

一部の質問には、正確な回答を提供するために回答が必要です。LODG ではなく、dimhexpand でビジネスを行うことはできますか、またはその逆は可能ですか? 上記のサブクエリの回答は、常に 1 対 1 でビジネスを行う場合に有効です。そうでない場合、完全に結合されていないと、いずれかのテーブルから値が失われます。どちらかのテーブルに固有のビジネスを持つことができる場合、メモリ テーブルで作業できますか?

Declare @tblDimhExpand TABLE (
    business varchar(50) null, 
    CountDimHExpand int null
    )
Declare @tblLoDG TABLE (
    business varchar(50) null, 
    CountLodG int null
    )

Insert into @tblDimhExpand select business, count(*) from DimhExpand Group By Business

Insert into @tblLoDG select business, count(*) from LODG Group By Business

Select coalesce(dim.business, lodg.business) as Business, dim.countDimhExpand, lodg.countlodg
    From @tblDimhExpand dim
    FULL JOIN @tblLodG lodg on dim.Business = lodg.Business

これにより、他のテーブルに存在するかどうかに関係なく、両方のテーブルからすべてのビジネス レコードが返され、両方に存在する場合は結果が結合され、一方のみに存在する場合はその値がないテーブルに NULL が返されます。

于 2013-05-02T16:05:14.603 に答える
0

business列の 2 つのテーブルを結合できます。

select d.business, 
  count(d.business) as dimCount,
  l.lodgCount
from dimhexpand d
left join
(
  select business, count (*) lodgCount
  from LODG 
  group by business 
) l
  on d.business = l.business
group by d.business;

business各テーブルに異なる値がある可能性がある場合は、次FULL OUTER JOINのように両方のクエリ間でa を使用できます。

select coalesce(d.business, l.business),
  coalesce(d.dimCount, 0) dimCount,
  coalesce(l.lodgCount, 0) lodgCount
from
(
  select business, count(*) as dimCount 
  from dimhexpand 
  group by business
) d
full outer join
(
  select business, count (*) lodgCount
  from LODG 
  group by business 
) l
  on d.business = l.business
于 2013-05-02T15:52:26.680 に答える