none
Pivot RRS feed

  • Pergunta

  • Estou estudando Pivot no SQL e estou seguindo o seguinte tutorial

     

    http://blogs.msdn.com/b/spike/archive/2009/03/03/pivot-tables-in-sql-server-a-simple-sample.aspx

     

    Porém todos as minhas querys apresentam o seguinte erro.

     

    Msg 102, Level 15, State 1, Line 5
    Sintaxe incorreta próxima a '('.

     

    select * from DailyIncome

    pivot (avg (IncomeAmount) for IncomeDay in ([MON],[TUE],[WED],[THU],[FRI],[SAT],[SUN])) as AvgIncomePerDay

     

    Por favor, podem me ajudar?

    sexta-feira, 10 de dezembro de 2010 20:28

Respostas

  • Eduardo,

    Esta mensagem geralmente acotnece quando o servidor é SQL 2000, talvez o seu cliente é 2005 mas o server 2000, execute o comando abaixo e poste o resultado

     

    SELECT
    SERVERPROPERTY('ProductVersion') AS ProductVersion,
    SERVERPROPERTY('ProductLevel') AS ProductLevel,
    SERVERPROPERTY('Edition') AS Edition;
    
    

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    segunda-feira, 13 de dezembro de 2010 13:10
    Moderador

Todas as Respostas

  • Pode ser problema com a versão do SQL. No 2000 a forma de fazer é diferente das versões 2005 e 2008.

     

    Att.,


    Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com Se o post foi útil, não esqueça de marcá-lo.
    sexta-feira, 10 de dezembro de 2010 21:26
  • A versão que utilizo é 2005.
    segunda-feira, 13 de dezembro de 2010 12:34
  • Eduardo,

    Esta mensagem geralmente acotnece quando o servidor é SQL 2000, talvez o seu cliente é 2005 mas o server 2000, execute o comando abaixo e poste o resultado

     

    SELECT
    SERVERPROPERTY('ProductVersion') AS ProductVersion,
    SERVERPROPERTY('ProductLevel') AS ProductLevel,
    SERVERPROPERTY('Edition') AS Edition;
    
    

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    segunda-feira, 13 de dezembro de 2010 13:10
    Moderador
  • Olá Eduardo!

    Obteve progresso?

    Att.


    Eder Costa - LATAM Forum Support Engineer
    Microsoft Corporation
    sexta-feira, 17 de dezembro de 2010 17:48
    Moderador
  • Boa noite,

    Estou aprendendo a usar o Pivot também e vi sua resposta. Executei o comando que você postou e obtive o seguinte resultado:

    ProductVersion ProductLevel Edition
    10.0.1600.22 RTM Enterprise Edition (64-bit)

    O SQL é o 2008. O comando SQL é o seguinte:

    WITH QUERY AS (
    SELECT 
    	MONTH(B.DATAINI) MES,
    	C.SIGLA, 
    	SUM(A.VALORTOTALSADT) VLR
    FROM SZATENDSADT A inner jOIN SZPARCIALATEND B ON
    A.NUMEROCONTA = B.NUMEROCONTA
    AND A.SEQUENCIALCONTA = B.SEQUENCIALCONTA
    AND A.SEQPARCIAL = B.SEQPARCIAL
    INNER JOIN SZCADGERAL C ON
    B.CODCONVENIO = C.CODGERAL
    WHERE B.DATAINI >='2014-01-01'  AND A.ESTORNADO IS NOT NULL
    GROUP BY C.SIGLA,
    	MONTH(B.DATAINI)
    )
    
    SELECT SIGLA, [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]
    FROM QUERY
    PIVOT 
    (	SUM(VLR)
    	FOR QUERY.MES
    	 IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])
    ) AS SOMA;
    	

    A query acima retorna o seguinte erro:

    Msg 102, Level 15, State 1, Line 20
    Incorrect syntax near '('.

    Verifiquei em vários posts pela internet e todos segui mais ou menos a mesma sintaxe.

    terça-feira, 4 de novembro de 2014 23:53
  • Galves.rod,

    Tente declarar no cabeçalho da sua CTE Query, as colunas que devem ser retornas por esta consulta.

    Antes de tentar fazer uso do Pivot, monte um Select fora da CTE para retornar somente os dados da CTE e veja se funciona.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 5 de novembro de 2014 15:49
  • cara segue um exemplo de como eu utilizo o PIVOT meu SQL Server é o 2008 R2

    SELECT U.[CNPJ / CPF],U.CLIENTE,U.[QTDE VEICULOS],
            COALESCE([Alerta de Telemetria],0) AS [Alerta de Telemetria],
            Coalesce([Bateria do Veículo desviolada],0) AS [Bateria do Veículo desviolada],
    Coalesce([Bateria do Veículo violada],0) AS [Bateria do Veículo violada]
      FROM #Tabela C
      PIVOT (SUM(QUANTIDADE) 
             FOR EVENTO IN ([Alerta de Telemetria],
    [Bateria do Veículo desviolada],
    [Bateria do Veículo violada])) AS U ORDER BY 2

    quarta-feira, 5 de novembro de 2014 16:32