2017-02-12 3 views
-1
tbl 
A | B 

A enthält viele Werte. B enthält nur 2 Werte.2 Gruppieren nach in einer einzigen Abfrage

ich die Daten als

a1 | count(b1) | count(b2) 
a2 | count(b1) | count(b2) 
.... 
an | count(b1) | count(b2) 
+0

Bitte geben Datenabtastwert und erwartete Ausgabe. – GurV

+0

A ist studentName. B ist isPresent. B kann Ja oder Nein sein. Ich möchte die Aufzeichnung von jedem A und Zählung (jedes B). –

Antwort

2

Es sollte so einfach wie das erhalten möchten:

select 
a, 
count(case when b = b1 then 1 else null end) as b1, 
count(case when b = b2 then 1 else null end) as b2 
from tbl 
group by a 
2

der Hoffnung, verstand ich Ihr Problem richtig,

versucht, das gleiche zu erstellen Problem. Bitte beziehen Sie sich auf Anfragen.

Sqlfiddle Link für gleiche http://sqlfiddle.com/#!9/b557543/4/0

CREATE TABLE SO_TEST(
COL1 VARCHAR(100), 
COL2 VARCHAR(100) 
); 

INSERT INTO SO_TEST VALUES('V1','Y'); 
INSERT INTO SO_TEST VALUES('V1','N'); 
INSERT INTO SO_TEST VALUES('V2','Y'); 
INSERT INTO SO_TEST VALUES('V2','N'); 
INSERT INTO SO_TEST VALUES('V3','Y'); 
INSERT INTO SO_TEST VALUES('V4','Y'); 

select col1 , 
count(case when col2='Y' then 1 end) y_cnt, 
count(case when col2='N' then 1 end) n_cnt 
from SO_TEST 
group by col1; 

enter image description here

+0

Große Anstrengungen, um eine ziemlich schlechte Lösung für ein Problem zu bieten. –

+0

@ O.Jones Danke – Tajinder

Verwandte Themen