两个sql查询之间的减法

时间:2009-10-19 14:41:55

标签: sql sql-server tsql subtraction

我在MS SQL中有2个查询,使用COUNT函数返回大量结果。

我可以运行第一个查询并获取第一个结果,然后运行另一个结果以获得另一个结果,减去它们并找到结果;但有没有办法结合所有3个功能,得到1个整体结果

如:运行sql1运行sql2运行SQL3(sql1-sql2)?....

我尝试使用xxxx作为功能,但没有运气。

11 个答案:

答案 0 :(得分:34)

您应该可以使用子查询:

SELECT
    (SELECT COUNT(*) FROM ... WHERE ...)
  - (SELECT COUNT(*) FROM ... WHERE ...) AS Difference

刚试过它:

Difference
-----------
45

(1 row(s) affected)

答案 1 :(得分:21)

SELECT (SELECT COUNT(*) FROM t1) - (SELECT COUNT(*) FROM t2)

答案 2 :(得分:3)

我知道这是一个老帖子,但这是另一种最符合我需求的解决方案(在火鸟上测试)

SELECT c1-c2 from (select count(*) c1 from t1), (SELECT COUNT(*) c2 from t2);

答案 3 :(得分:2)

选择(从TRMDW.EMPLOYEE1中选择COUNT(名字))-(从TRMDW.EMPLOYEE1中选择COUNT(名字))作为对偶的区别;

答案 4 :(得分:1)

只需使用查询逻辑创建一个内联函数,并让它返回结果。根据需要传递参数。

答案 5 :(得分:1)

select @result = (select count(0) from table1) - (select count(0) from table2)

答案 6 :(得分:1)

SELECT
   t1.HowManyInTable1
  ,t2.HowManyInTable2
  ,t1.HowManyInTable1 = t2.HowManyInTable2  Table1_minus_Table2
 from (select count(*) HowManyInTable1 from Table1) t1
  cross join (select count(*) HowManyInTable2 from Table2) t2

答案 7 :(得分:1)

call

这对我有用。

如果只有一张桌子,你也可以这样做:

SELECT (count(*) from t1) - (count(*) from t2);

答案 8 :(得分:1)

这可以在单个查询中完成:

SELECT COUNT(col_name) - COUNT(DISTINCT col_name) as Difference from table_name;

答案 9 :(得分:0)

((SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(m,' /',2),' /', - 1)FROM ms WHERE ms.id = t.m_id) - (SELECT COUNT(id)FROM t AS tr WHERE tr.m_id = t.m_id) )AS剩余

答案 10 :(得分:0)

这将返回差额

SELECT COUNT(Attribute) - COUNT(DISTINCT Attribute) FROM table_name;