2011-02-14 10 views
5

tengo una consulta de selección SQL que extrae resultado como:sql datos de fila de selección de pantalla como columnas

login_count login_type 
2000   iPhone 
7000   browser 

pero quiero que el resultado como:

iphone_login browser_login 
2000   7000 

decir que quiero extraer fila1-col1 como col1 y row2-col2 como col2 usando una consulta de selección.

Mi búsqueda original es

select count(login_count), login_type from log_table group by login_type; 

Gracias, Gaurav

Respuesta

3

Prueba esto:

SELECT 
    SUM(IF(login_type = 'iPhone', 1, 0)) AS iphone_login, 
    SUM(IF(login_type = 'browser', 1, 0)) AS browser_login 
FROM log_table 
+0

¿Qué sucede si hay un montón de tipo de inicio de sesión? iphone, navegador, otro, etc. – Eray

+0

Por cierto, ¿cuántas veces has dado esta respuesta? Eso no es una crítica, simplemente parece que veo al menos una nueva pregunta "seleccionar filas como columnas" * todos los días *. Necesitamos algún tipo de borrachera cercana a toda la comunidad ... Si pudiéramos acordar cuál de estas preguntas tiene las mejores respuestas 'canónicas' ... :) –

+0

@Eray Luego use la consulta original y deje que Excel transponga los tipos en columnas para ti. ;) –

0

Aquí hay otra opción que funciona en MySQL y en otros DBMS también.

select sum(case when login_type = 'iPhone' then 1 else 0 end) as iphone_login 
     ,sum(case when login_type = 'browser' then 1 else 0 end) as browser_login 
from log_table 
Cuestiones relacionadas