Tengo algunos problemas al intentar realizar una consulta. Tengo dos tablas, una con información de elementos y otra con registros relacionados con los elementos de la primera tabla. La idea es colocar en la misma fila la información del elemento más varios registros de información.¿Es posible reutilizar subconsultas?
estructura puede ser explicar así:
table [ id, name ]
[1, '1'], [2, '2']
table2 [ id, type, value ]
[1, 1, '2009-12-02']
[1, 2, '2010-01-03']
[1, 4, '2010-01-03']
[2, 1, '2010-01-02']
[2, 2, '2010-01-02']
[2, 2, '2010-01-03']
[2, 3, '2010-01-07']
[2, 4, '2010-01-07']
Y esto es quieren me gustaría lograr:
result [id, name, Column1, Column2, Column3, Column4]
[1, '1', '2009-12-02', '2010-01-03', , '2010-01-03']
[2, '2', '2010-01-02', '2010-01-02', '2010-01-07', '2010-01-07']
La consulta siguiente obtiene el resultado correcto, pero me parece extremadamente ineficiente , teniendo que iterar table2 para cada columna. ¿Sería posible de todos modos hacer una subconsulta y reutilizarla?
SELECT
a.id,
a.name,
(select min(value) from table2 t where t.id = subquery.id and t.type = 1 group by t.type) as Column1,
(select min(value) from table2 t where t.id = subquery.id and t.type = 2 group by t.type) as Column2,
(select min(value) from table2 t where t.id = subquery.id and t.type = 3 group by t.type) as Column3,
(select min(value) from table2 t where t.id = subquery.id and t.type = 4 group by t.type) as Column4
FROM
(SELECT distinct id
FROM table2 t
WHERE (t.type in (1, 2, 3, 4))
AND t.value between '2010-01-01' and '2010-01-07') as subquery
LEFT JOIN table a ON a.id = subquery.id
Qué es esto en la base de datos? ¿Y qué versión de la base de datos (por ejemplo, sql server 2000, 2005 o 2008?) –
Posible duplicado de [¿Cómo reutilizar una consulta secundaria en sql?] (Http://stackoverflow.com/questions/14987317/how-to-reuse -a-sub-query-in-sql) –