2013-07-31 19 views
19

Bir tablom var ve çıkışı aşağıdaki şekilde sunmam gerekiyor. 'Kabul edilen'Bir kasa ekstresinde sql count kullanarak

çıkış olarak rsp_ind = 'Yeni' 0 ve 1 satır

tb_a: 

col1 | reg_id | rsp_ind 

Sayısı aşağıdaki sorguyu kullanarak güvenilir

NEW | Accepted 
9 | 10 

olmalıdır.

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 

ve ben birileri çıktı elde etmek sorguyu çimdik bana yardım edebilir

NEW | Accepted 
NULL| 10 
9 | NULL 

olarak çıktı alıyorum. Not: Bunu çevreleyen bir toplam ekleyemiyorum. Daha büyük bir programın parçası ve bu yüzden buna süper bir sorgu ekleyemiyorum.

+0

Bir toplam ekleyin ama sorguyu değiştiremezsiniz? veya bunu bir alt sorgu yapmak mı? –

+0

Durum bildirimi yerine alt sorgu ekleyebilirim. Ama bunun üstündeki süper bir sorgu değil ... Açıkça bir alt sorgu ekleyerek performans isabetiyle geliyor ... – Raghav

+2

Anladım .. o zaman belki de bu alt sorguyu bir satır içi alt sorgu yapmak yerine birleştirme maddesine ekleyebilirsiniz. Ur kodu? –

cevap

54
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 

Sen HERE

+0

bu OP –

+1

@JafarKofahi'nin sizden ne istediğini açıklamayacaktır! Bana öyle görünüyor ki OP ... –

+0

o dedi ki "Not: Bunu çevreleyen bir toplam ekleyemiyorum. Onun" –

4

Kapat Bu istek için çıkış görebilirsiniz ... deneyin:

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 
+0

bu OP –

+0

için sorar ne ile gitmek olmaz OP, bunun bir tane yerine iki satır verir. Yalnızca – ErikE

+0

yazım hatası - bir kapanış parantezini kapalı bıraktı. Şaşırttı bile çalıştı. –

0
select sum(rsp_ind = 0) as `New`, 
     sum(rsp_ind = 1) as `Accepted` 
from tb_a 
+0

Bu, SQL'in tüm türevlerinde çalışmayacak ... – ErikE

+2

Evet - MySQL üzerinde çalışacaktır. –

+3

OP'nin verdiği önemli bir ayrıntı, bunun ne için olduğunu DBMS söylemedi. – ErikE

2

iki satır bir yerine alıyoruz sebebi sizin olmasıdır dış sorguda rsp_ind tarafından gruplandırılıyor (sizin hayal kırıklığınıza, bizimle paylaşmayın). GROUP BY öğeyle uğraşmadan iki yerine bir satır zorlamak için yapabileceğiniz hiçbir şey yoktur.