SQL:计算两个不同表中的两个不同列

Jer*_* F. 1 sql t-sql sql-server

我正在尝试获取两个不同表的资源列的不同计数,然后显示每个项目 ID 的比较。现在,此查询为我提供了两个表的相同计数值。

select 
    t1.PRJCT_ID,
    count(t1.RSRC_ID) as TBL1_RSRC_CNT,
    t2.PRJCT_ID,
    count(t2.RSRC_ID) as TBL2_RSRC_CNT
from
    DATA_TABLE_1 t1
LEFT OUTER JOIN 
    DATA_TABLE_2 t2 on t1.PRJCT_ID = t2.PRJCT_ID
GROUP BY
    t1.PRJCT_ID, t2.PRJCT_ID
order by 1
Run Code Online (Sandbox Code Playgroud)

Bli*_*ndy 5

当然,您将获得相同的计数,您正在计算同一个表的列(由连接创建,授予,但它仍然是一个矩形表)。

您想要做的是使用子查询。首先获取每个项目 id 的列表(从一个表,或解析两个相关表的联合,但这是数据库规范化不良的标志),然后独立查询表的计数:

select p.ID,
  (select count(*) from DATA_TABLE_1 t1 where t1.ID=p.ID) Count1,
  (select count(*) from DATA_TABLE_2 t2 where t2.ID=p.ID) Count2
from projects p
Run Code Online (Sandbox Code Playgroud)

  • 不,不是,请不要在这里吐槽您在 Internet 上看到的内容,并在查询上运行“解释”以亲自查看。 (4认同)