66

テーブルがあり、次の方法で出力を提示する必要があります。

tb_a:

col1  |  reg_id | rsp_ind 

rsp_ind = 0 が「New」、1 が「Accepted」の行数

出力は

NEW | Accepted
9   | 10

次のクエリを使用してみました。

select 
  case when rsp_ind = 0 then count(reg_id)end as 'New',
  case when rsp_ind = 1 then count(reg_id)end as 'Accepted'
from tb_a

そして私は次のように出力されます

NEW | Accepted
NULL| 10
9   | NULL

誰かがクエリを微調整して出力を達成するのを手伝ってくれませんか。注:これを囲む合計を追加することはできません. これはより大きなプログラムの一部であるため、これにスーパークエリを追加することはできません。

4

8 に答える 8

147
SELECT 
    COUNT(CASE WHEN rsp_ind = 0 then 1 ELSE NULL END) as "New",
    COUNT(CASE WHEN rsp_ind = 1 then 1 ELSE NULL END) as "Accepted"
from tb_a

このリクエストの出力は、こちらで確認できます

于 2013-07-31T16:01:02.283 に答える
13

閉じる...試してください:

select 
   Sum(case when rsp_ind = 0 then 1 Else 0 End) as 'New',
   Sum(case when rsp_ind = 1 then 1 else 0 end) as 'Accepted'
from tb_a
于 2013-07-31T16:01:15.797 に答える
2

1 行ではなく 2 行を取得している理由はrsp_ind、外側のクエリでグループ化しているためです (残念ながら、私たちと共有していませんでした)。GROUP BYその項目を処理せずに、2 行ではなく 1 行を強制するためにできることは何もありません。

于 2013-07-31T16:21:22.900 に答える
0
select sum(rsp_ind = 0) as `New`,
       sum(rsp_ind = 1) as `Accepted` 
from tb_a
于 2013-07-31T16:02:26.223 に答える