0

我必须在列上的两个表之间创建连接并显示它们连接的字段的计数

例如,这里的“业务”是我想加入的关键。

第一个查询是

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

我想通过加入这两个表来返回数据以显示类似

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

Dual            6909        909

ECM         1508        508

Flex            15481       151481
4

2 回答 2

0

您可以 JOINbusiness列上的​​两个表:

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 回答
0

有些问题需要回答才能提供准确的答案。您可以在 dimhexpand 开展业务而不在 LODG 开展业务吗?反之亦然?如果您总是有一对一的业务,那么上面提供的子查询答案将起作用。如果没有,如果没有完全连接,您将丢失任一表中的值。如果您可以拥有任一表独有的业务,您可以使用内存表吗?

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 回答