SQL - Sólo se puede especificar una expresión en la lista de selección cuando la subconsulta... SQL Server

 
Vista:
sin imagen de perfil

Sólo se puede especificar una expresión en la lista de selección cuando la subconsulta... SQL Server

Publicado por milton (4 intervenciones) el 02/03/2018 11:27:18
bueno soy muy nuevo en esto de SQL y estoy intentando crear el siguiente procedimiento:

1
2
3
4
5
6
7
8
9
10
11
use Demandantes_Base;
 
DROP PROCEDURE punto2;
GO
CREATE PROCEDURE punto2 @estudios NVARCHAR(30), @nacio NVARCHAR(30), @deman NVARCHAR(50) OUTPUT
AS
SELECT @deman=(SELECT D.Nombre, D.Apellidos, N.Pais
FROM (Demandantes AS D INNER JOIN Nacionalidades AS N ON D.nacionalidad=N.Cod_nacionalidad)
INNER JOIN Estudios AS E ON D.Nivel_estudios=E.Cod_Nivel
WHERE E.Nivel LIKE @estudios AND @N.Pais LIKE @nacio);
GO

al momento de ejecutar el código me sale el error "Mens 116, Nivel 16, Estado 1, Procedimiento punto2, Línea 6
Sólo se puede especificar una expresión en la lista de selección cuando la subconsulta no se especifica con EXISTS."
, he estado buscando en todo lado y sigo sin entender lo que tengo que hacer para que funcione correctamente el código, ¿pueden ayudarme a solucionar el problema?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Sólo se puede especificar una expresión en la lista de selección cuando la subconsulta... SQL Server

Publicado por Leonardo Josué (1173 intervenciones) el 02/03/2018 15:52:16
Hola Milton:

Tengo un tiempo sin trabajar con SQL Server, pero veo un problema claro en la consulta: En tu SELECT estás regresando tres valores:


1
SELECT D.Nombre, D.Apellidos, N.Pais ...

pero esto lo estás tratando de asignar a una variable, hasta donde recuerdo, para poder hacer una asignación como la estás poniendo, la subconsulta DEBE REGRESAR UN ÚNICO VALOR. Si necesitas que tu variable te regrese los tres campos, entonces tendrías que CONCATENARLOS, para que el resultado esté en una única columna.

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Sólo se puede especificar una expresión en la lista de selección cuando la subconsulta... SQL Server

Publicado por Milton (4 intervenciones) el 02/03/2018 18:12:00
lo e probado como me dices y provando el codigo me uqeda algo asi

use Demandantes;
DROP PROCEDURE Prueva;
GO
CREATE PROCEDURE Prueva @pais NVARCHAR(30), @estudio NVARCHAR(30), @deman NVARCHAR(30) OUTPUT
AS
SELECT @deman=CONCAT(D.Nombre,' ',D.Apellidos,' ',N.Pais)
FROM (Demandantes AS D INNER JOIN Nacionalidades AS N ON D.Nacionalidad= N.Cod_nacionalidad)
INNER JOIN Estudios AS E ON D.Nivel_estudios=E.Cod_Nivel
WHERE N.Pais LIKE @pais AND E.Nivel LIKE @estudio;
GO

de este modo aparece como un único resultado aunque me gustaría que apareciera en columnas aparte a la hora de llamar el procedimiento, y aunque ya me da un resultado solo me devuelve el ultimo resultado que registra
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Sólo se puede especificar una expresión en la lista de selección cuando la subconsulta... SQL Server

Publicado por Isaias (1921 intervenciones) el 02/03/2018 18:45:54
Con el permiso de Leo

¿Que resultado espera obtener?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Sólo se puede especificar una expresión en la lista de selección cuando la subconsulta... SQL Server

Publicado por Milton (4 intervenciones) el 02/03/2018 18:54:44
Pues me gustaría que al llamar el procedimiento al devolver la consulta aparezcan todos los resultados separados en sus respectivas columnas respectivas columnas el lugar de que aparezca todo junto en un único campo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Sólo se puede especificar una expresión en la lista de selección cuando la subconsulta... SQL Server

Publicado por Isaias (1921 intervenciones) el 02/03/2018 20:38:56
¿Nos puede mostrar algun ejemplo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Sólo se puede especificar una expresión en la lista de selección cuando la subconsulta... SQL Server

Publicado por Milton (4 intervenciones) el 03/03/2018 09:34:52
Pues seria algo así:



Captura
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar