1

ステータス フィールドを持つテーブルがあり、単純なグループ化を実行できる各ステータスのレコード数を知りたい場合。そして、2 つのレコードのカウントとその他すべてのレコードのカウントを知りたい場合はどうでしょうか。

言い換えれば、私はこれが欲しい:

Status   Count
-------- -----
Success   X
Running   Y
Failure   Z

しかし、失敗はテーブルの失敗であり、実際のエラーメッセージが含まれているため、成功実行の違いがすべて必要ですnot

4

3 に答える 3

3
select case when Status <> 'Success' 
             and Status <> 'Running' 
            then 'Failure' 
            else Status 
        end Status, 
       count (*) [Count]
from atable
group by case when Status <> 'Success' 
               and Status <> 'Running' 
              then 'Failure' 
              else Status 
          end 
于 2012-05-03T13:49:41.120 に答える
3

SQL Fiddle でデモを表示するには、ここをクリックしてください。

スクリプト:

CREATE TABLE errormsgs 
(
    id          INT         NOT NULL IDENTITY
  , statusmsg   VARCHAR(30) NOT NULL
);

INSERT INTO errormsgs (statusmsg) VALUES
  ('Success'),
  ('This is error message 1.'),
  ('Running'),
  ('This is error message 2.'),
  ('This is error message 3.'),
  ('Success'),
  ('Success'),
  ('This is error message 4.'),
  ('Running'),
  ('failure, may be'),
  ('failure, absolutely.');

;WITH statuses AS
(
    SELECT  CASE
                WHEN statusmsg NOT IN ('Success', 'Running') THEN 'Failure' 
                ELSE statusmsg 
            END status
    FROM    errormsgs
)
SELECT      status
        ,   COUNT(status) AS status_count
FROM        statuses 
GROUP BY    status;

出力:

STATUS   STATUS_COUNT
-------- ------------
Failure        6
Running        2
Success        3
于 2012-05-03T14:07:44.653 に答える
1
SELECT DISTINCT CASE 
                     WHEN [status]='s' OR [STATUS]='r' THEN [status]
                     ELSE 'OTHER'
                END AS STATUS
      ,COUNT(1) OVER(
           PARTITION BY CASE 
                             WHEN [status]='s'
           OR [STATUS]='r' THEN [status] ELSE 'aaa' END
       ) AS 'count'
FROM   tbl2

ここに画像の説明を入力

于 2012-05-03T13:48:46.120 に答える