使用tsql减去从两个表返回的计数
我有两个名为使用tsql减去从两个表返回的计数,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我有两个名为A和B的表 表A包含请求详细信息,如 请求id,公司id和客户id 表B包含反馈数据,如反馈id,公司id,状态id,客户id,总分 我需要获得表B的行数,该表具有与表A对应的company\u id,其中status\u ind为1,并从表A的行数中减去 您必须使用sql存储过程或函数。我不知道您在问什么,但是 declare @countA integer = (select count(*) from A) declare @countB integer = (se
A
和B
的表
表A
包含请求详细信息,如
请求id
,公司id
和客户id
表B包含反馈数据,如反馈id
,公司id
,状态id
,客户id
,总分
我需要获得表
B
的行数,该表具有与表A
对应的company\u id
,其中status\u ind
为1
,并从表A
的行数中减去 您必须使用sql存储过程或函数。我不知道您在问什么,但是
declare @countA integer = (select count(*) from A)
declare @countB integer =
(select count(*) from B where
exists(select * from A where A.company_id = B.company_id AND A.status_ind = 1)
declare @difference integer = @countA - @countB
我也不确定。但我是这样理解的:
SELECT COUNT(*) FROM A WHERE company_id NOT IN (SELECT company_id FROM B WHERE status_ind = 1)
我编辑了它,我首先认为状态索引在表A中而不是在B中似乎您的问题可以这样重新表述:计算与
状态索引=1
不匹配的A
行数
好吧,只需使用反连接,例如:
SELECT COUNT(*)
FROM A
LEFT JOIN B ON A.company_id = B.company_id AND B.status_ind = 1
WHERE B.company_id IS NULL
那些支票查询一直困扰着我-PL:)是的,你可以。但查询本身有点困难。您不需要存储过程或函数。看看我的答案。