** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Sentencia SQL por estado
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoSentencia SQL por estado

 Responder Responder Página  <12
Autor
Mensaje
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: en línea
Puntos: 14428
Enlace directo a este mensaje Enviado: 25/Marzo/2021 a las 16:25
¿Pero qué agrupación?

.. en la cláusula GROUP BY sólo deben estar los campos por los que quieras que agrupe ... ni uno más.




Editado por Mihura - 25/Marzo/2021 a las 16:26
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
shenares Ver desplegable
Habitual
Habitual


Unido: 01/Septiembre/2020
Localización: Madrid
Estado: Sin conexión
Puntos: 62
Enlace directo a este mensaje Enviado: 25/Marzo/2021 a las 16:31
Hola,

La agrupación esta bien, lo que necesito es que de esas agrupaciones me coja el mínimo Id de los que tengan valor 'Testing' y 'Global..'. Esta es la idea.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: en línea
Puntos: 14428
Enlace directo a este mensaje Enviado: 25/Marzo/2021 a las 17:07
OK, entonces son varias consultas:

- una que obtenga las agrupaciones que quieres (esa ya la tienes hecha)
- otra que obtenga los valores mínimos de Testing y Global
- una tercera que relacione las dos anteriores



Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
shenares Ver desplegable
Habitual
Habitual


Unido: 01/Septiembre/2020
Localización: Madrid
Estado: Sin conexión
Puntos: 62
Enlace directo a este mensaje Enviado: 25/Marzo/2021 a las 17:48
Hola,

Gracias, he intentado realizar la consulta pero no me aparece nada coherente:

SELECT Agrupaciones.Model, Agrupaciones.Status_date, (select status from projects_status where id = MinStat.MinId) AS DevStatus
FROM
(SELECT Model, Status, Status_date, ExecutionProject_id FROM Projects_status WHERE (Status = 'Testing' Or Status = 'Global Final Report') AND YEAR(Status_date) = Year(DATE())
GROUP BY Model, Status, Status_date, ExecutionProject_id) AS Agrupaciones ,
(SELECT Status, Min(Id) As MinId
FROM Projects_status
WHERE (Status = 'Testing' Or Status = 'Global Final Report') Group By Status) AS MinStat;

He mezclado ambas tablas pero no creo que este bien...
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: en línea
Puntos: 14428
Enlace directo a este mensaje Enviado: 25/Marzo/2021 a las 18:17
SELECT CamposQueQuieroVer
FROM (ConsultaGrupos) AS T1
LEFT JOIN (ConsultaMinimos) AS T2 ON T1.Status=T2.Status
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
shenares Ver desplegable
Habitual
Habitual


Unido: 01/Septiembre/2020
Localización: Madrid
Estado: Sin conexión
Puntos: 62
Enlace directo a este mensaje Enviado: 26/Marzo/2021 a las 08:53
Hola,

He intentado realizar la siguiente consulta, pero me da error en la sentencia FROM y no se el motivo:

SELECT T1.Model, T1.Status, T1.Status_date
FROM (SELECT Model, Status, Status_date, ExecutionProject_id FROM Projects_status WHERE (Status = 'Testing' Or Status = 'Completed') AND YEAR(Status_date) = Year(DATE()) AS T1
LEFT JOIN (SELECT Min(Id), Status FROM Projects_status) AS T2 ON T1.Status = T2.Status;
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: en línea
Puntos: 14428
Enlace directo a este mensaje Enviado: 26/Marzo/2021 a las 11:43
¿Las subconsultas por separado te funcionan?, es decir, esto ¿te da los valores que quieres?:

SELECT Model, Status, Status_date, ExecutionProject_id FROM Projects_status WHERE (Status = 'Testing' Or Status = 'Completed') AND YEAR(Status_date) = Year(DATE()


¿y esto también?:

SELECT Min(Id), Status FROM Projects_status



Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
shenares Ver desplegable
Habitual
Habitual


Unido: 01/Septiembre/2020
Localización: Madrid
Estado: Sin conexión
Puntos: 62
Enlace directo a este mensaje Enviado: 26/Marzo/2021 a las 13:01
Hola,

He visto que había algún error y lo he arreglado. Aún así, no me da los valores que quiero:

Sentencia:

SELECT T1.ExecutionProject_id, T1.Model, T1.Status, T1.Status_date
FROM (SELECT Model, Status, Status_date, ExecutionProject_id FROM Projects_status WHERE (Status = 'Testing' Or Status = 'Completed') AND YEAR(Status_date) = Year(DATE())) AS T1
LEFT JOIN (SELECT Min(Id) As Mmid, Status FROM Projects_status Group by Status) AS T2 ON T1.Status = T2.Status;

Resultado:

ExecutionProject_id     Model     Status     Status_date
81     LBAD0XX1SC-DM     Completed     02/03/2021
85     C1121X-8PLTEP     Testing     03/03/2021
85     C1121X-8PLTEP     Testing     05/03/2021
85     C1121X-8PLTEP     Testing     09/03/2021
85     C1121X-8PLTEP     Testing     09/03/2021
299     L610-EU     Testing     27/01/2021
299     L610-EU     Testing     01/02/2021
299     L610-EU     Testing     02/02/2021
299     L610-EU     Testing     03/02/2021
301     APOS A8     Testing     07/01/2021
301     APOS A8     Testing     12/01/2021
301     APOS A8     Testing     01/02/2021
85     C1121X-8PLTEP     Completed     29/01/2021
0     MY21 TCP GA/GB     Testing     04/03/2021
0     MY19 TCP GA     Testing     12/03/2021
0     MY23 TCP GB     Testing     17/03/2021
245     CB3 Basic EU     Testing     17/03/2021
245     CB3 Basic EU     Testing     17/03/2021
245     CB3 Basic EU     Testing     18/03/2021
245     CB3 Basic EU     Testing     18/03/2021
245     CB3 Basic EU     Testing     19/03/2021
301     APOS A8     Completed     16/03/2021
0     MY20 TCP GB     Completed     17/03/2021
0     MY21 TCP GA/GB     Completed     04/03/2021
0     MY19 TCP GA     Completed     12/03/2021
0     MY23 TCP GB     Completed     17/03/2021

Por ejemplo, para el model C1121X-8PLTEP, execution Id 85, muestra varios valores de 'Testing' y solo quiero que me muestre el minimo.

¿que puede pasar?

YUn slaudo,
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: en línea
Puntos: 14428
Enlace directo a este mensaje Enviado: 26/Marzo/2021 a las 13:03
¿Qué valores obtienes con las dos subconsultas por separado?

Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
shenares Ver desplegable
Habitual
Habitual


Unido: 01/Septiembre/2020
Localización: Madrid
Estado: Sin conexión
Puntos: 62
Enlace directo a este mensaje Enviado: 26/Marzo/2021 a las 14:11
Hola,

Esta sentencia (SELECT Model, Status, Status_date, ExecutionProject_id FROM Projects_status WHERE (Status = 'Testing' Or Status = 'Completed') AND YEAR(Status_date) = Year(DATE())):

Model     Status     Status_date     ExecutionProject_id
LBAD0XX1SC-DM     Completed     02/03/2021     81
C1121X-8PLTEP     Testing     03/03/2021     85
C1121X-8PLTEP     Testing     05/03/2021     85
C1121X-8PLTEP     Testing     09/03/2021     85
C1121X-8PLTEP     Testing     09/03/2021     85
L610-EU     Testing     27/01/2021     299
L610-EU     Testing     01/02/2021     299
L610-EU     Testing     02/02/2021     299
L610-EU     Testing     03/02/2021     299
APOS A8     Testing     07/01/2021     301
APOS A8     Testing     12/01/2021     301
APOS A8     Testing     01/02/2021     301
C1121X-8PLTEP     Completed     29/01/2021     85
MY21 TCP GA/GB     Testing     04/03/2021     0
MY19 TCP GA     Testing     12/03/2021     0
MY23 TCP GB     Testing     17/03/2021     0
CB3 Basic EU     Testing     17/03/2021     245
CB3 Basic EU     Testing     17/03/2021     245
CB3 Basic EU     Testing     18/03/2021     245
CB3 Basic EU     Testing     18/03/2021     245
CB3 Basic EU     Testing     19/03/2021     245
APOS A8     Completed     16/03/2021     301
MY20 TCP GB     Completed     17/03/2021     0
MY21 TCP GA/GB     Completed     04/03/2021     0
MY19 TCP GA     Completed     12/03/2021     0
MY23 TCP GB     Completed     17/03/2021     0

Esta sentencia (SELECT Min(Id) As Mmid, Status FROM Projects_status Group by Status):
Mmid     Status
170     Completed
183     Created
247     Debugging
63     EoT DEKRA
1     First Contact
169     Global Final Report
52     Kick-Off/Setup
233     NDA/Quoation
18     NDA/Quotation
49     Offer Accepted
86     Offer received
29     Offer sent
8     Quotation/NDA
51     Samples Received
7     SRF Received
59     Testing
5     Welcome Pack

Un saludo,
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: en línea
Puntos: 14428
Enlace directo a este mensaje Enviado: 26/Marzo/2021 a las 15:33
Pues con esos valores te tendrá que mostrar MMid = 170 en Completed y 59 en los casos de Testing.

SELECT T1.ExecutionProject_id, T1.Model, T1.Status, T1.Status_date, T2.MMid
.....
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Juanmasp Ver desplegable
Habitual
Habitual


Unido: 21/Abril/2006
Estado: Sin conexión
Puntos: 122
Enlace directo a este mensaje Enviado: 26/Marzo/2021 a las 15:49
Hola,

Yo creo que tal y como tenías la consulta, cambiando un par de cosas, te tiene que dar el resultado que buscas.

Tienes que quitar la agrupación por Status_date (porque así te saldría el primero de cada fecha distinta)

Así

SELECT Min(Id), Model, Status, Min(Status_date), ExecutionProject_id
FROM Projects_status
WHERE (Status = 'Testing' Or Status = 'Global Final Report') AND YEAR(Status_date) = Year(DATE())
GROUP BY Model, Status, ExecutionProject_id;

Salu2.
Arriba
shenares Ver desplegable
Habitual
Habitual


Unido: 01/Septiembre/2020
Localización: Madrid
Estado: Sin conexión
Puntos: 62
Enlace directo a este mensaje Enviado: 29/Marzo/2021 a las 09:08
Gracias @Juanmasp, esa es la sentencia que buscaba! un saludo!
Arriba
 Responder Responder Página  <12
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable