2016-11-05 4 views
1

gibt es eine Möglichkeit, einige Werte des COUNT (*) in diese Spalten einzufügen. Erklären. Ich habe eine TabelleMeine SQL-Ergebnisse von Zeilen zu Spalte

+--------+----------+ 
    | url | type | 
    +--------+----------+ 
    | URl1 | A  | 
    +--------+----------+ 
    | URL1 | B  | 
    +--------+----------+ 
    | URL2 | C  | 
    +--------+----------+ 
    | URL2 | C  | 
    +--------+----------+ 

, wo die Werte sind, wie oft der Typ (A, B, C) in dem Datensatz angezeigt wird (deshalb zähle ich will) ich so etwas wie diese haben will bei mein final Table

+--------+------+-----+-----+ 
    | url | A | B | C | 
    +--------+------+-----+-----+ 
    | URL1 | 3 | 1 | 0 | 
    +--------+------+-----+-----+ 
    | URL2 | 2 | 0 | 1 | 
    +--------+------+-----+-----+ 

Bis jetzt habe ich diese

SELECT 
    url, type, COUNT(*) 
FROM 
    table 
GROUP BY url,type 

und ich erhalte dieses (random Beispiel)

|url  |type |COUNT of a specific type for this url| 
https://1 A 1 
https://2 A 1 
https://2 B 1 
https://3 B 1 
https://4 C 4 
https://4 B 2 
https://4 B 2 

und ich möchte die Werte wie die Tabelle einfügen oben

Antwort

0

Sie verwenden könnten Fall, wenn und Gruppe von

select url, 
      sum(case when type ='A' then 1 else 0 end) as A, 
      sum(case when type ='B' then 1 else 0 end) as B, 
      sum(case when type ='C' then 1 else 0 end) as C  
    FROM my_table 
    group by url ; 
+0

Thans für die schnelle Antwort es funktionierte. Ich habe so etwas versucht aber mit COUNT –

+0

danke .. in diesem Fall die Verwendung von Fall .. wenn .. ist sehr nützlich .. – scaisEdge