0

こんにちは私はステータス列のあるテーブルを持っています。SQLを使用して、レコードの総数、合格ステータスのレコードの総数、および不合格ステータスのレコードの総数を取得するにはどうすればよいですか?

4

4 に答える 4

2

このようなものはどうですか:

SELECT Status, COUNT(*)
FROM dbo.YourTable
GROUP BY Status WITH ROLLUP

これは、これら2つのステータス(合格、不合格)が唯一のステータスである場合に機能します(そうでない場合は、追加でWHERE Status IN ('fail', 'pass')条件が必要になります)。またWITH ROLLUP、すべてのステータスの行の総数(Status = NULL出力にaが含まれる)も表示されます。

于 2012-07-24T20:47:08.717 に答える
1

私は次のようなクエリを書きます

select 
Count(*) as TotalRecords, 
Sum(case where status = 'Pass' then 1 else 0 end) as PassRecords,
Sum(case where status = 'Fail' then 1 else 0 end) as FaileRecords
from Table
于 2012-07-24T20:51:08.930 に答える
0

これは、caseステートメントと集計を使用して実行できます。

select count(*), sum(case when status = 'pass' then 1 else 0 end) as pass,
       sum(case when status = 'fail' then 1 else 0 end) as fail
from t
于 2012-07-24T20:50:33.280 に答える
0

他のいくつかの選択肢(SQL Server 2008以降):

DECLARE @foo TABLE([status] CHAR(4));

INSERT @foo SELECT 'pass'
UNION ALL SELECT 'pass'
UNION ALL SELECT 'fail';

-- option #1:

SELECT [status], c = COUNT(*)
FROM @foo
GROUP BY GROUPING SETS(([status]), ());

-- option #2:

SELECT [status], c = COUNT(*)
FROM @foo
GROUP BY [status]
UNION ALL 
SELECT NULL, COUNT(*) OVER() FROM @foo;
于 2012-07-24T21:00:06.793 に答える