Estoy un poco atascado en lo siguiente. Los datos de la tabla de la siguiente manera:
sid eid description returncode responsemessage State
1 T-1 200 OK Sent
1 T-1 Helloworld Processed
No puedo usar el procedimiento almacenado, la aplicación solo admite una consulta SQL.
select *
from table
where eid='T-1'
and returncode='200'
and returnmessage='OK'
and state='Sent'
¿Puede ser necesario agregar algo aquí?
¿Algún consejo o idea sobre cómo puedo lograr esto con la consulta SQL?
Actualización: Base de datos Oracle, quiero recuperar "HelloWorld" de la columna de descripción, pero solo debería recuperarse cuando State = Sent tiene returncode = 200 y responsemessage = ok
2 respuestas
No tengo del todo claro lo que está tratando de lograr, pero tal vez se refería a algo como esto:
select T1.*
from table T1
INNER JOIN table T2
ON T2.SID = T1.sid
where T1.eid='T-1'
and T1.returncode='200'
and T1.returnmessage='OK'
and T1.state='SENT'
AND T2.description IS NOT NULL
Creo que puedes hacer esto usando exists
:
select t.*
from t
where t.description is not null and t.eid = 'T-1' and
exists (select 1
from t t2
where t2.eid = t.eid and t2.returncode = '200' and
t2.returnmessage = 'OK' and t2.state = 'SENT'
);
Es posible que también desee incluir la igualdad en sid
, pero eso no está claro a partir de la pregunta.
Nuevas preguntas
sql
El lenguaje de consulta estructurado (SQL) es un lenguaje para consultar bases de datos. Las preguntas deben incluir ejemplos de código, estructura de tabla, datos de muestra y una etiqueta para la implementación de DBMS (por ejemplo, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, etc.) que se utiliza. Si su pregunta se relaciona únicamente con un DBMS específico (usa extensiones / características específicas), use la etiqueta de ese DBMS en su lugar. Las respuestas a las preguntas etiquetadas con SQL deben usar SQL estándar ISO / IEC.