I have this query in SQL Server:
x
SELECT
(SELECT moduloT.diagnostico FROM BdMINIPlus.dbo.moduloT AS moduloT WHERE moduloT.idPaciente=612) AS moduloT,
(SELECT CASE WHEN moduloU.preguntaU8 = 'Si' OR moduloU.preguntaU9 = 'Si' THEN 'Si' ELSE 'No' END FROM BdMINIPlus.dbo.moduloU AS moduloU WHERE moduloU.idPaciente=612) AS moduloU,
(SELECT moduloW.diagnostico FROM BdMINIPlus.dbo.moduloW AS moduloW WHERE moduloW.idPaciente=612) AS moduloW,
(SELECT moduloX.diagnostico FROM BdMINIPlus.dbo.moduloX AS moduloX WHERE moduloX.idPaciente=612) AS moduloX,
(SELECT moduloY.diagnostico FROM BdMINIPlus.dbo.moduloY AS moduloY WHERE moduloY.idPaciente=612) AS moduloY;
I get this result:
The subquery returned more than one value, which is not correct when followed by =,! =, <, <=,>,> = Or when used as an expression.
I do not understand why it is due and how to correct it, I would greatly appreciate it if you could give me an idea of how to solve it.
Advertisement
Answer
Just another option is to re-write the queries as a JOIN … Perhaps multiple records should be expected.
Example
Select moduloT = T.diagnostico
,moduloU = CASE WHEN U.preguntaU8 = 'Si' OR U.preguntaU9 = 'Si' THEN 'Si' ELSE 'No' END
,moduloW = W.diagnostico
,moduloX = X.diagnostico
,moduloY = Y.diagnostico
From BdMINIPlus.dbo.moduloT T
Left Join BdMINIPlus.dbo.moduloU U on T.idPaciente = U.idPaciente
Left Join BdMINIPlus.dbo.moduloW W on T.idPaciente = W.idPaciente
Left Join BdMINIPlus.dbo.moduloX X on T.idPaciente = X.idPaciente
Left Join BdMINIPlus.dbo.moduloY Y on T.idPaciente = Y.idPaciente
Where T.idPaciente=612