Usuário com melhor resposta
Inserir Pré-Requisitos numa só coluna

Pergunta
-
Olá pessoal,
Estou precisando incluir em uma coluna todos os pré-requisitos de uma disciplina. Para isso, estou tentando fazer a consulta abaixo mas está retornando um erro. Alguém poderia me dar uma ajudinha?
DECLARE @SQLStr VARCHAR(5000) SET @SQLStr = ''
SELECT A.CODGRADE, A.CODCURSO, B.CODPERIODO, SEMESTRE = B.DESCRICAO,
C.CODDISC,
(
SELECT @SQLStr + REQUISITOS + ', '
FROM (SELECT X.CODDISC AS REQUISITOS
FROM SREQUISITO AS X (NOLOCK)
WHERE X.CODCOLIGADA = C.CODCOLIGADA
AND X.CODCURSO = C.CODCURSO
AND X.CODHABILITACAO = C.CODHABILITACAO
AND X.CODGRADE = C.CODGRADE
AND X.CODPERIODO = C.CODPERIODO
AND X.CODDISCREQ = C.CODDISC)
SET @SQLStr = LEFT(@SQLStr,len(@SQLStr))
SELECT @SQLStr
)
FROM SGRADE A (NOLOCK)
INNER JOIN SPERIODO AS B (NOLOCK) ON (B.CODCOLIGADA = A.CODCOLIGADA
AND B.CODCURSO = A.CODCURSO
AND B.CODHABILITACAO = A.CODHABILITACAO
AND B.CODGRADE = A.CODGRADE)
INNER JOIN SDISCGRADE AS C (NOLOCK) ON (C.CODCOLIGADA = B.CODCOLIGADA
AND C.CODCURSO = B.CODCURSO
AND C.CODHABILITACAO = B.CODHABILITACAO
AND C.CODGRADE = B.CODGRADE
AND C.CODPERIODO = B.CODPERIODO)WHERE A.CODGRADE = 'TEO'
Mensagem de erro:
Msg 156, Level 15, State 1, Line 17
Incorrect syntax near the keyword 'SET'.
Msg 102, Level 15, State 1, Line 19
Incorrect syntax near ')'.
Como poso resolver esse problema?
Grato,
Ilano.
- Editado ilanocf quinta-feira, 1 de março de 2018 20:09
Respostas
Todas as Respostas
-
Galera,
Pensei em outro jeito, mas ainda preciso da ajuda de vocês. Criei a seguinte procedure:
CREATE PROCEDURE SP_PRERREQUISITOS ( @CODCOLIGADA AS INT, @CODCURSO AS VARCHAR(25), @CODHABILITACAO AS VARCHAR(25), @CODGRADE AS VARCHAR(25), @CODPERIODO AS INT, @CODDISC AS VARCHAR(25) ) AS BEGIN DECLARE @SQLStr VARCHAR(5000) SET @SQLStr = '' SELECT @SQLStr + REQUISITOS + ', ' FROM (SELECT X.CODDISC AS REQUISITOS FROM SREQUISITO AS X (NOLOCK) WHERE X.CODCOLIGADA = @CODCOLIGADA AND X.CODCURSO = @CODCURSO AND X.CODHABILITACAO = @CODHABILITACAO AND X.CODGRADE = @CODGRADE AND X.CODPERIODO = @CODPERIODO AND X.CODDISCREQ = @CODDISC ) AS ABC SET @SQLStr = LEFT(@SQLStr,len(@SQLStr)) SELECT @SQLStr end;
Como faço para incluir essa procedure dentro do SQL abaixo:
SELECT A.CODGRADE, A.CODCURSO, B.CODPERIODO, SEMESTRE = B.DESCRICAO, C.CODDISC, [PROCEDURE_AQUI] FROM SGRADE A (NOLOCK) INNER JOIN SPERIODO AS B (NOLOCK) ON (B.CODCOLIGADA = A.CODCOLIGADA AND B.CODCURSO = A.CODCURSO AND B.CODHABILITACAO = A.CODHABILITACAO AND B.CODGRADE = A.CODGRADE) INNER JOIN SDISCGRADE AS C (NOLOCK) ON (C.CODCOLIGADA = B.CODCOLIGADA AND C.CODCURSO = B.CODCURSO AND C.CODHABILITACAO = B.CODHABILITACAO AND C.CODGRADE = B.CODGRADE AND C.CODPERIODO = B.CODPERIODO)
WHERE A.CODGRADE = 'TEO'
- Editado ilanocf quinta-feira, 1 de março de 2018 22:36
-
-