web-dev-qa-db-ja.com

2つのSQLクエリ間の減算

MS SQLに2つのクエリがあり、COUNT関数を使用して多数の結果を返します。

最初のクエリを実行して最初の結果を取得し、次に他のクエリを実行して他の結果を取得し、それらを減算して結果を見つけることができます。しかし、3つの関数すべてを組み合わせて1つの全体的な結果を得る方法はありますか

のように:実行sql1実行sql2実行SQL3(sql1-sql2)?....

私は関数としてxxxxでそれらを試しましたが、運はありませんでした。

22
andreas

そのためにサブクエリを使用できるはずです。

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

ちょうどそれをテストしました:

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

(1 row(s) affected)
37
Joey
SELECT (SELECT COUNT(*) FROM t1) - (SELECT COUNT(*) FROM t2)
24
Gary McGill

私はこれが古い投稿であることを知っていますが、これは私のニーズに最適な別のソリューションです(firebirdでテスト済み)

SELECT c1-c2 from (select count(*) c1 from t1), (SELECT COUNT(*) c2 from t2);
3
Sven M.

これは違いを返します

SELECT COUNT(Attribute) - COUNT(DISTINCT Attribute) FROM table_name;
2
sourabh bodkhe

クエリは次のようになります。

SELECT (select COUNT(FIRSTNAME) FROM TRMDW.EMPLOYEE1) - (SELECT COUNT(DISTINCT FIRSTNAME) FROM TRMDW.EMPLOYEE1) as difference from dual;
2
Ayesha Shaik

クエリロジックを使用してインライン関数を作成し、結果を返すだけです。必要に応じてパラメーターを渡します。

1
John Lechowicz
select @result = (select count(0) from table1) - (select count(0) from table2)
1
Justin Niessner
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
1
Philip Kelley
SELECT (count(*) from t1) - (count(*) from t2);

これは私のために働いた。

また、テーブルが1つしかない場合は、次のことも実行できます。

SELECT (count(column1)) - count(column2)) from table; 
1
Csaxena

クエリは次のようになります。

((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 remaining
0

これは単一のクエリで実行できます。

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