La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/SQL-Server/1361651-CONSULTAS-COMPLEJAS-DE-SQL-SERVER.html

CONSULTAS COMPLEJAS DE SQL SERVER

CONSULTAS COMPLEJAS DE SQL SERVER

Publicado por Jorge (1 intervención) el 14/12/2012 22:41:10
Estimados.

Tengo una pequeña consulta al momento de realizar un select complejo, me explico:

Se tiene por ejemplo la siguiente tabla de estados:
ID NOMBRE
A Activo
R Rechazada
P Proceso

Y tengo otra tabla por ejemplo que tiene:

ID NUMERO ESTADO
1 20607 R
2 20608 A
3 20608 A

La consulta que tengo que realizar me tiene que devolver lo siguiente:
NUMERO ESTADO TOTAL
20607 A 0
20607 R 1
20607 P 0
20608 A 2
20608 R 0
20608 P 0

Si alguien me puede ayudar con la consulta, se lo tendría enormemente agradecido, la consulta es en SQL SERVER 2008.
Imágen de perfil de Isaias

CONSULTAS COMPLEJAS DE SQL SERVER

Publicado por Isaias (4558 intervenciones) el 17/12/2012 22:16:13
Con mucho gusto te ayudo, solo tengo la duda, ¿que avance llevas de tu consulta?

CONSULTAS COMPLEJAS DE SQL SERVER

Publicado por Pedro (1 intervención) el 08/01/2013 20:04:58
Amigo esta consulta quedaría de la siguiente manera:

select numero,estado, count(estado) total
from tabla2
group by numero

Checa y me parece que así debe de salir.

CONSULTAS COMPLEJAS DE SQL SERVER

Publicado por Quique (1 intervención) el 11/04/2014 14:44:25
Esta consulta debería funcionar.
Al menos en MySQL funciona, en otros SGBD puede haber que cambiar la función IF por otra que realice unha función similar: obtener NULL cuando t1.id sea distinto de t2.estado y cualquier cosa que no sea NULL en caso contrario

SELECT t2.numero, t1.id, count(IF(t1.id=t2.estado, 1, NULL))
FROM t1, t2
GROUP BY t2.numero, t1.id;

Un saludo

CONSULTAS COMPLEJAS DE SQL SERVER

Publicado por pipo (1 intervención) el 26/02/2016 13:55:20
1
2
3
4
5
6
7
8
9
10
11
select  ISNULL(b.Numero,20608) , a.Id, count(b.Numero)
from @Tipo a
left outer join @Estado b on a.Id=b.Estado
and b.Numero=20608
group by b.Numero, a.Id
union
select  ISNULL(b.Numero,20607) , a.Id, count(b.Numero)
from @Tipo a
left outer join @Estado b on a.Id=b.Estado
and b.Numero=20607
group by b.Numero, a.Id


hay algo mejor???? les agradeceria mucho....