|
Responder
|
Página 12> |
| Autor | |
shenares
Habitual
Unido: 01/Septiembre/2020 Localización: Madrid Estado: Sin conexión Puntos: 62 |
Tema: Sentencia SQL por estadoEnviado: 15/Marzo/2021 a las 09:50 |
|
Hola,
Espero poder explicarme para entender la sentencia que me gustaría tramitar. Tengo una BBDD en access que recoge Estados de un proyecto. Estos estados pueden repetirse en el tiempo y tener varias veces un mismo estado. Como ejemplo: Model Status Status_date APOS A8 Welcome Pack 06/02/2020 APOS A8 Welcome Pack 02/04/2020 APOS A8 NDA/Quotation 24/04/2020 APOS A8 NDA/Quotation 27/04/2020 APOS A8 NDA/Quotation 05/05/2020 APOS A8 NDA/Quotation 11/05/2020 APOS A8 NDA/Quotation 12/05/2020 APOS A8 SRF received 21/05/2020 APOS A8 SRF received 29/05/2020 APOS A8 SRF received 01/06/2020 APOS A8 SRF received 02/06/2020 APOS A8 SRF received 08/06/2020 APOS A8 NDA/Quotation 09/06/2020 APOS A8 Offer sent 11/06/2020 APOS A8 Offer sent 16/06/2020 APOS A8 Offer sent 06/07/2020 APOS A8 NDA/Quotation 03/09/2020 APOS A8 NDA/Quotation 07/09/2020 APOS A8 NDA/Quotation 08/09/2020 APOS A8 NDA/Quotation 10/09/2020 APOS A8 Offer received 23/09/2020 APOS A8 Samples received 28/09/2020 APOS A8 Samples received 06/10/2020 APOS A8 Testing 02/11/2020 APOS A8 Testing 19/11/2020 APOS A8 Testing 23/11/2020 APOS A8 Testing 03/12/2020 APOS A8 Testing 09/12/2020 APOS A8 Testing 07/01/2021 APOS A8 Testing 12/01/2021 APOS A8 Testing 01/02/2021 APOS A8 EoT DEKRA 12/02/2021 APOS A8 EoT DEKRA 06/03/2021 APOS A8 Testing 07/03/2021 APOS A8 Testing 08/03/2021 APOS A8 EoT DEKRA 09/03/2021 APOS A8 EoT DEKRA 10/03/2021 APOS A8 Testing 11/03/2021 APOS A8 EoT DEKRA 12/03/2021 La idea es que la sentencia me muestre algo así: Model Status Status_date APOS A8 Testing 02/11/2020 -> El primer valor de testing APOS A8 EoT DEKRA 12/02/2021 -> El primer valor de EoT DEKRA APOS A8 Testing 07/03/2021 -> El primer valor de testing APOS A8 EoT DEKRA 09/03/2021 -> El primer valor de EoT DEKRA APOS A8 Testing 11/03/2021 -> El primer valor de testing APOS A8 EoT DEKRA 12/03/2021 -> El primer valor de EoT DEKRA ¿Es posible tener una consulta para establecer este criterio? Gracias de antemano. |
|
![]() |
|
mounir
Colaborador
Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6521 |
Enviado: 15/Marzo/2021 a las 13:46 |
|
Hola!
No veo ningún criterio que valga para hacer lo que necesitas. Tiene que haber otro campo que discrimine entre los grupos y no sólo el orden. |
|
|
Un Saludo.
|
|
![]() |
|
shenares
Habitual
Unido: 01/Septiembre/2020 Localización: Madrid Estado: Sin conexión Puntos: 62 |
Enviado: 15/Marzo/2021 a las 16:14 |
|
Hola,
Gracias por la respuesta. Hay un Id para cada uno de los valores, ¿crees que esto es suficiente? Estos son los campos de esta tabla: Id, Project_Id, Model, Status, Status_reason, Source, Status_date De estos valores, los que me interesan son el Model, Status y Status_date |
|
![]() |
|
mounir
Colaborador
Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6521 |
Enviado: 15/Marzo/2021 a las 17:59 |
|
Hola!
Tiene que ser un campo que tenga un valor común a cada grupo. |
|
|
Un Saludo.
|
|
![]() |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Enviado: 16/Marzo/2021 a las 08:38 |
|
Lo que pides es muy similar a los subtotales de Excel: "por cada cambio en xxx haz aquello"
Pero me temo que no existe nada directo en Access que devuelva eso. Yo creo que deberás crear un código que recorra los registros y vaya comparando. Cada vez que encuentras una diferencia entre ese registro y el anterior salvas los resultados en una tabla temporal. Un saludo
|
|
![]() |
|
Juanmasp
Habitual
Unido: 21/Abril/2006 Estado: Sin conexión Puntos: 122 |
Enviado: 16/Marzo/2021 a las 15:23 |
|
Lo puedes hacer en un informe, Ordenando por Status_date y Agrupando después por Model y Status
Muestras el encabezado de grupo y ocultas el detalle, así solo saldrá el primero de cada subgrupo Si el model no cambia, como en el ejemplo que as puesto, entonces agrupa solo por Status Esta es una forma de hacerlo sin nada de código, digamos "Automático"
|
|
![]() |
|
shenares
Habitual
Unido: 01/Septiembre/2020 Localización: Madrid Estado: Sin conexión Puntos: 62 |
Enviado: 22/Marzo/2021 a las 23:56 |
|
Hola a todos,
He cambiado la forma de la tabla añadiendo un valor en común: Model Status Status_date ExecutionProject_Id APOS A8 Welcome Pack 06/02/2020 1 APOS A8 Welcome Pack 02/04/2020 1 APOS A8 NDA/Quotation 24/04/2020 1 APOS A8 NDA/Quotation 27/04/2020 1 APOS A8 NDA/Quotation 05/05/2020 1 APOS A8 NDA/Quotation 11/05/2020 1 APOS A8 NDA/Quotation 12/05/2020 1 APOS A8 SRF received 21/05/2020 1 APOS A8 SRF received 29/05/2020 1 APOS A8 SRF received 01/06/2020 1 APOS A8 SRF received 02/06/2020 1 APOS A8 SRF received 08/06/2020 1 APOS A8 NDA/Quotation 09/06/2020 1 APOS A8 Offer sent 11/06/2020 1 APOS A8 Offer sent 16/06/2020 1 APOS A8 Offer sent 06/07/2020 1 APOS A8 NDA/Quotation 03/09/2020 1 APOS A8 NDA/Quotation 07/09/2020 1 APOS A8 NDA/Quotation 08/09/2020 1 APOS A8 NDA/Quotation 10/09/2020 1 APOS A8 Offer received 23/09/2020 1 APOS A8 Samples received 28/09/2020 1 APOS A8 Samples received 06/10/2020 1 APOS A8 Testing 02/11/2020 1 APOS A8 Testing 19/11/2020 1 APOS A8 Testing 23/11/2020 1 APOS A8 Testing 03/12/2020 1 APOS A8 Testing 09/12/2020 1 APOS A8 Testing 07/01/2021 1 APOS A8 Testing 12/01/2021 1 APOS A8 Testing 01/02/2021 1 APOS A8 EoT DEKRA 12/02/2021 1 APOS A8 EoT DEKRA 06/03/2021 1 APOS A8 Testing 07/03/2021 2 APOS A8 Testing 08/03/2021 2 APOS A8 EoT DEKRA 09/03/2021 2 APOS A8 EoT DEKRA 10/03/2021 2 APOS A8 Testing 11/03/2021 3 APOS A8 EoT DEKRA 12/03/2021 3 El resultado que busco es este: Model Status Status_date ExecutionProjects_Id APOS A8 Testing 02/11/2020 1 -> El primer valor (Id) de testing APOS A8 EoT DEKRA 12/02/2021 1 -> El primer valor (Id) de EoT DEKRA APOS A8 Testing 07/03/2021 2 -> El primer valor (Id) de testing APOS A8 EoT DEKRA 09/03/2021 2 -> El primer valor (Id) de EoT DEKRA APOS A8 Testing 11/03/2021 3 -> El primer valor (Id) de testing APOS A8 EoT DEKRA 12/03/2021 3 -> El primer valor (Id) de EoT DEKRA Querría que se mostrara el primer valor (Id) de Testing y primer valor (Id) de EoT DEKRA, asemejado a ese ExecutionProjects_Id. Un slaudo, |
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: en línea Puntos: 14428 |
Enviado: 25/Marzo/2021 a las 12:45 |
|
Una SQL de totales, agrupando por los campos que quieres, quedándote con el valor mínimo de Id, te da el resultado que buscas.
|
|
![]() |
|
shenares
Habitual
Unido: 01/Septiembre/2020 Localización: Madrid Estado: Sin conexión Puntos: 62 |
Enviado: 25/Marzo/2021 a las 12:51 |
|
Hola,
He hecho algo así, pero no me da los minimos: SELECT Min(Id), 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; ¿Que estoy haciendo mal? |
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: en línea Puntos: 14428 |
Enviado: 25/Marzo/2021 a las 13:41 |
|
Eso te dará el mínimo por cada agrupación: modelo-status-date-idProject
|
|
![]() |
|
shenares
Habitual
Unido: 01/Septiembre/2020 Localización: Madrid Estado: Sin conexión Puntos: 62 |
Enviado: 25/Marzo/2021 a las 14:09 |
|
Hola,
Si, quiero que me dé el mínimo por cada agrupación, pero me aparece lo siguiente: Expr1000 Model Status Status_date ExecutionProject_id 330 APOS A8 Global Final Report 16/03/2021 301 94 APOS A8 Testing 07/01/2021 301 95 APOS A8 Testing 12/01/2021 301 96 APOS A8 Testing 01/02/2021 301 287 C1121X-8PLTEP Testing 03/03/2021 85 288 C1121X-8PLTEP Testing 05/03/2021 85 303 C1121X-8PLTEP Testing 09/03/2021 85 342 CB3 Basic EU Testing 17/03/2021 245 361 CB3 Basic EU Testing 18/03/2021 245 363 CB3 Basic EU Testing 19/03/2021 245 196 L610-EU Global Final Report 02/03/2021 299 59 L610-EU Testing 27/01/2021 299 60 L610-EU Testing 01/02/2021 299 61 L610-EU Testing 02/02/2021 299 62 L610-EU Testing 03/02/2021 299 311 MY19 TCP GA Global Final Report 12/03/2021 0 213 MY19 TCP GA Testing 12/03/2021 0 260 MY21 TCP GA/GB Global Final Report 04/03/2021 0 211 MY21 TCP GA/GB Testing 04/03/2021 0 335 MY23 TCP GB Global Final Report 17/03/2021 0 331 MY23 TCP GB Testing 17/03/2021 0 La idea es que me dé el minimo de esos dos estados por agrupación. Editado por shenares - 25/Marzo/2021 a las 14:12 |
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: en línea Puntos: 14428 |
Enviado: 25/Marzo/2021 a las 15:39 |
|
¿Y la consulta que has hecho es?
|
|
![]() |
|
shenares
Habitual
Unido: 01/Septiembre/2020 Localización: Madrid Estado: Sin conexión Puntos: 62 |
Enviado: 25/Marzo/2021 a las 15:44 |
|
Hola,
La consulta es la que he indicado anteriormente: SELECT Min(Id), 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; Un saludo, |
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: en línea Puntos: 14428 |
Enviado: 25/Marzo/2021 a las 16:07 |
|
Vamos a ver, está haciendo lo que le pides en la consulta ...
Saca los 'Testing' o 'Global...' agrupados por esos cuatro campos ... Si quieres que agrupe por menos tendrás que quitarlos de la cláusula WHERE ... o eso o no te estoy entendiendo en lo más mínimo ...
![]() |
|
![]() |
|
shenares
Habitual
Unido: 01/Septiembre/2020 Localización: Madrid Estado: Sin conexión Puntos: 62 |
Enviado: 25/Marzo/2021 a las 16:16 |
|
Hola,
Puede que no me haya explicado bien. Tengo una tabla con esos campos, Model Status Status_date ExecutionProject_id, Id. Lo que quiero es una consulta que me agrupe los campos, donde Status sea 'Testing' o 'Global..', pero solo el minimo ID por cada agrupación. Sería algo así: APOS A8 Testing 02/11/2020 1 -> El minimo valor (Id) de testing APOS A8 EoT DEKRA 12/02/2021 1 -> El minimo valor (Id) de EoT DEKRA APOS A8 Testing 07/03/2021 2 -> El minimo valor (Id) de testing APOS A8 EoT DEKRA 09/03/2021 2 -> El minimo valor (Id) de EoT DEKRA APOS A8 Testing 11/03/2021 3 -> El minimo valor (Id) de testing APOS A8 EoT DEKRA 12/03/2021 3 -> El minimo valor (Id) de EoT DEKRA La tabla de la que cojo los datos tiene esta pinta: Model Status Status_date ExecutionProject_Id APOS A8 Welcome Pack 06/02/2020 1 APOS A8 Welcome Pack 02/04/2020 1 APOS A8 NDA/Quotation 24/04/2020 1 APOS A8 NDA/Quotation 27/04/2020 1 APOS A8 NDA/Quotation 05/05/2020 1 APOS A8 NDA/Quotation 11/05/2020 1 APOS A8 NDA/Quotation 12/05/2020 1 APOS A8 SRF received 21/05/2020 1 APOS A8 SRF received 29/05/2020 1 APOS A8 SRF received 01/06/2020 1 APOS A8 SRF received 02/06/2020 1 APOS A8 SRF received 08/06/2020 1 APOS A8 NDA/Quotation 09/06/2020 1 APOS A8 Offer sent 11/06/2020 1 APOS A8 Offer sent 16/06/2020 1 APOS A8 Offer sent 06/07/2020 1 APOS A8 NDA/Quotation 03/09/2020 1 APOS A8 NDA/Quotation 07/09/2020 1 APOS A8 NDA/Quotation 08/09/2020 1 APOS A8 NDA/Quotation 10/09/2020 1 APOS A8 Offer received 23/09/2020 1 APOS A8 Samples received 28/09/2020 1 APOS A8 Samples received 06/10/2020 1 APOS A8 Testing 02/11/2020 1 APOS A8 Testing 19/11/2020 1 APOS A8 Testing 23/11/2020 1 APOS A8 Testing 03/12/2020 1 APOS A8 Testing 09/12/2020 1 APOS A8 Testing 07/01/2021 1 APOS A8 Testing 12/01/2021 1 APOS A8 Testing 01/02/2021 1 APOS A8 EoT DEKRA 12/02/2021 1 APOS A8 EoT DEKRA 06/03/2021 1 APOS A8 Testing 07/03/2021 2 APOS A8 Testing 08/03/2021 2 APOS A8 EoT DEKRA 09/03/2021 2 APOS A8 EoT DEKRA 10/03/2021 2 APOS A8 Testing 11/03/2021 3 APOS A8 EoT DEKRA 12/03/2021 3 En la cuál hay varias filas por cada Execution_id. Gracias |
|
![]() |
|
Responder
|
Página 12> |
|
Tweet
|
| Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |