I have this data:
Blockquote
id_doc | id_exp | id_act | fecha |
---|---|---|---|
500 | 2000 | 3 | 2021-10-23 |
501 | 2000 | 4 | NULL |
502 | 2000 | 6 | 2021-10-23 |
503 | 2000 | 2 | 2021-10-23 |
504 | 3000 | 4 | NULL |
505 | 3000 | 6 | 2021-10-23 |
506 | 4000 | 3 | 2021-10-23 |
507 | 4000 | 4 | NULL |
Blockquote
I want show like this (only show id_act=4 and fecha is null) but show the same id_exp if id_act not in (2, 6):
Blockquote
id_doc | id_exp | id_act | fecha |
---|---|---|---|
506 | 4000 | 3 | 2021-10-23 |
507 | 4000 | 4 | NULL |
CodePudding user response:
You can chekc WITH NOT EXISTS if one id_exp has a id_act in (2,6)
SELECT `id_doc`, `id_exp`, `id_act`, `fecha` FROM tab1
WHERE `id_exp` IN
(SELECT `id_exp` FROM tab1 t1 WHERE
`id_act` = 4 and `fecha` IS NULL
AND NOT EXISTS ( SELECT 1 FROM tab1 WHERE `id_act` IN (2,6) AND `id_exp` = t1.`id_exp` ))
id_doc | id_exp | id_act | fecha |
---|---|---|---|
506 | 4000 | 3 | 2021-10-23 |
507 | 4000 | 4 | null |