SQL: Msg 156, Nivel 15, Estado 1 :sintaxis Incorrecta cerca de la palabra clave ‘FINAL’

Ok tengo 2 preguntas 1) he buscado en google el error(en el título), pero me parece que no puede conseguir para que me ayude, mi proc:

CREATE PROCEDURE [dbo].[p_Target]
AS
BEGIN
SET NOCOUNT ON

    CREATE TABLE #tmp1 
    (
        AUD_ID BIGINT,
        RowCounter BIGINT,
        DistinctCounter BIGINT,
        NACounter BIGINT,
        Total BIGINT,
        [Status] VARCHAR(MAX)
    )
   INSERT INTO #tmp1 EXEC [p_GetCompleteIncompleteNaOverviewSCORE] 
DECLARE @Total AS INT

    SELECT @Total = COUNT(*)
    FROM (
    SELECT CASE WHEN CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,t2.AUD_TargetDate), 101)) < CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,GETDATE()), 101))
            THEN 'Over Due: '
            ELSE 'On Time: ' END AS [Target Status]
            FROM #tmp1 t1 INNER JOIN dbo.Audit t2
            ON t1.AUD_ID = t2.AUD_ID
            WHERE t1.[Status] = 'Open') DER 

    SELECT ([Target Status] + '' + CAST(COUNT(*) AS NVARCHAR(255))  + ' of ' + CAST(@Total AS NVARCHAR(255))) AS TargetStatus, (SELECT COUNT(*)) * 100 / (SELECT ([Target Status] + '' + CAST(COUNT(*) AS NVARCHAR(255))) AS [Count]
    FROM (
    SELECT CASE WHEN CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,t2.AUD_TargetDate), 101)) < CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,GETDATE()), 101))
            THEN 'Over Due: '
            ELSE 'On Time: ' END AS [Target Status]
            FROM #tmp1 t1 INNER JOIN dbo.Audit t2
            ON t1.AUD_ID = t2.AUD_ID
            WHERE t1.[Status] = 'Open') DER
    GROUP BY [Target Status] 
    END
GO

He atado de añadir ) para NVARCHAR(255))) AS [Count] pero todavía errores,

2)necesito conseguir AS [Count] como un porcentaje, si alguien puede ayudar? Que es mi código try tal vez estoy en el camino correcto.?

  • ET NOCOUNT ON falta S es un error tipográfico?
  • Que es pegar el error.
InformationsquelleAutor Ruan | 2014-01-08

4 Kommentare

  1. 4

    Falta un cierre de paréntesis en el final de subselección. También le falta la » S » en el SET NOCOUNT. Actualizaciones de abajo.

    CREATE PROCEDURE [dbo].[p_Target]
    AS
    BEGIN
    SET NOCOUNT ON
    
        CREATE TABLE #tmp1 
        (
            AUD_ID BIGINT,
            RowCounter BIGINT,
            DistinctCounter BIGINT,
            NACounter BIGINT,
            Total BIGINT,
            [Status] VARCHAR(MAX)
        )
       INSERT INTO #tmp1 EXEC [p_GetCompleteIncompleteNaOverviewSCORE] 
    DECLARE @Total AS INT
    
        SELECT @Total = COUNT(*)
        FROM (
        SELECT CASE WHEN CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,t2.AUD_TargetDate), 101)) < CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,GETDATE()), 101))
                THEN 'Over Due: '
                ELSE 'On Time: ' END AS [Target Status]
                FROM #tmp1 t1 INNER JOIN dbo.Audit t2
                ON t1.AUD_ID = t2.AUD_ID
                WHERE t1.[Status] = 'Open') DER 
    
        SELECT ([Target Status] + '' + CAST(COUNT(*) AS NVARCHAR(255))  + ' of ' + CAST(@Total AS NVARCHAR(255))) AS TargetStatus, (SELECT COUNT(*)) * 100 / (SELECT ([Target Status] + '' + CAST(COUNT(*) AS NVARCHAR(255))) AS [Count]
        FROM (
        SELECT CASE WHEN CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,t2.AUD_TargetDate), 101)) < CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,GETDATE()), 101))
                THEN 'Over Due: '
                ELSE 'On Time: ' END AS [Target Status]
                FROM #tmp1 t1 INNER JOIN dbo.Audit t2
                ON t1.AUD_ID = t2.AUD_ID
                WHERE t1.[Status] = 'Open') DER
        GROUP BY [Target Status] 
        )
        END
    GO
  2. 0

    Es la falta de la ‘S’ en SET NOCOUNT ON después de la inicial de comenzar tal vez?

    • Que es una pasta de error
  3. 0

    Parece que su SELECT declaración sobre su última última FROM declaración de naciones unidas cierra paréntesis. Que haría el analizador de tirar un error cuando llega a la END declaración, ya que todavía piensa que está trabajando en la SELECT.

    SELECT ([Target Status] + '' + CAST(COUNT(*) AS NVARCHAR(255))  + ' of ' + CAST(@Total AS NVARCHAR(255))) AS TargetStatus, (SELECT COUNT(*)) * 100 / (SELECT ([Target Status] + '' + CAST(COUNT(*) AS NVARCHAR(255))) AS [Count]
           ^

    Siempre que obtenga una incorrect Syntax error es mejor ir con cuidado a través de su código y comprobar que todas las declaraciones están bien formadas y completa. Normalmente google no puede ayudarle, ya que es muy específico para el código. Un buen enfoque para encontrar la falla es localizar el punto del error (END en este caso) y trabajar hacia atrás. La causa del error puede ser muy muy por encima de el punto real en que se produce el error, pero será en algún lugar por encima de la de error. Y la lectura hacia atrás puede ayudar a detectar errores simples.

  4. 0
    Create Table TblAccount (UserName nvarchar(20) Primary Key,UserPwd varchar(20) not null)
    
    Declare @i int
    Set @i=1
    
    While @i<=10
    I have one question 
    BEGIN
        Insert INTO TblAccount Values('Seng Vitou'+CAST(@i AS VARCHar(2)),REVERSE('pwd'+CAST(@i as varchar(2))
    
        SET @i[email protected]i+1
    
    End   
    
    Msg 156, Level 15, State 1, Line 11
    Incorrect syntax near the keyword 'SET'.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea