Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用tsql减去从两个表返回的计数_Sql_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

使用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:)是的,你可以。但查询本身有点困难。您不需要存储过程或函数。看看我的答案。