none
group by erro RRS feed

  • Pergunta

  • Ola pessoal

    Alguem pode me ajudar com o comando abaixo, como faco para ajustar o group by ?

    SELECT DISTINCT

                          TOP (100) PERCENT (SUBSTRING(dbo.tblWRIAtoObs.Observacoes, CHARINDEX('Data Pedido:', dbo.tblWRIAtoObs.Observacoes) + 13, 10)) AS data,

                          SUBSTRING(dbo.tblWRIAtoObs.Observacoes, 33, 28) AS Comunicado

    FROM         dbo.vwWRIAtosParticipantes INNER JOIN

                          dbo.tblWRIAtosNegocios ON dbo.tblWRIAtosNegocios.PK_ID = dbo.vwWRIAtosParticipantes.FK_tblWRIAtosNegocios_Id INNER JOIN

                          dbo.tblWRIAtos ON dbo.tblWRIAtos.PK_Id = dbo.tblWRIAtosNegocios.FK_tblWRIAtos_Id INNER JOIN

                          dbo.tblWRIReal ON dbo.tblWRIReal.PK_Id = dbo.tblWRIAtos.FK_tblWRIReal_Id INNER JOIN

                          dbo.tblWRILivro ON dbo.tblWRILivro.PK_Id = dbo.tblWRIReal.FK_tblWRILivro_Id INNER JOIN

                          dbo.tblWRIAtoObs ON dbo.tblWRIAtoObs.FK_tblWRIAtos_Id = dbo.tblWRIAtos.PK_Id

    WHERE     (dbo.tblWRIReal.FK_tblWRILivro_Id = 15) AND (SUBSTRING(LTRIM(RTRIM(SUBSTRING(dbo.tblWRIAtoObs.Observacoes, CHARINDEX('data pedido:',

                          dbo.tblWRIAtoObs.Observacoes) + 13, 10))), 10, 7) = SUBSTRING(CONVERT(varchar(20), GETDATE(), 103), 10, 7))

     

    group by  (SUBSTRING(dbo.tblWRIAtoObs.Observacoes, CHARINDEX('Data Pedido:', dbo.tblWRIAtoObs.Observacoes)+13,10))

     

    Msg 8120, Level 16, State 1, Line 3

    Column 'dbo.tblWRIAtoObs.Observacoes' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

    quarta-feira, 26 de outubro de 2016 16:39

Respostas

  • Esse resultado que vc deseja o grup by não ira resolver
    acredito que vc possa trabalhar com Classificadores 
    Fiz um exemplo com seus dados

    ou Acredito qye vc queira seus dados em um formato de PIVOT

    segue um exemplo com Classificadores
    IF ( OBJECT_ID('TEMPDB..#tb_registros') IS NOT NULL )
        DROP TABLE #tb_registros;	
    
    
    CREATE TABLE #tb_registros
        (
          Data VARCHAR(MAX) ,
          Comunicado VARCHAR(MAX)
        );
    
    
    
    INSERT  INTO #tb_registros
            ( Data ,
              Comunicado
            )
            SELECT  ( SUBSTRING(dbo.tblWRIAtoObs.Observacoes,
                                CHARINDEX('Data Pedido:',
                                          dbo.tblWRIAtoObs.Observacoes) + 13, 10) ) AS data ,
                    SUBSTRING(dbo.tblWRIAtoObs.Observacoes, 33, 28) AS Comunicado
            FROM    dbo.vwWRIAtosParticipantes
                    INNER JOIN dbo.tblWRIAtosNegocios ON dbo.tblWRIAtosNegocios.PK_ID = dbo.vwWRIAtosParticipantes.FK_tblWRIAtosNegocios_Id
                    INNER JOIN dbo.tblWRIAtos ON dbo.tblWRIAtos.PK_Id = dbo.tblWRIAtosNegocios.FK_tblWRIAtos_Id
                    INNER JOIN dbo.tblWRIReal ON dbo.tblWRIReal.PK_Id = dbo.tblWRIAtos.FK_tblWRIReal_Id
                    INNER JOIN dbo.tblWRILivro ON dbo.tblWRILivro.PK_Id = dbo.tblWRIReal.FK_tblWRILivro_Id
                    INNER JOIN dbo.tblWRIAtoObs ON dbo.tblWRIAtoObs.FK_tblWRIAtos_Id = dbo.tblWRIAtos.PK_Id
            WHERE   ( dbo.tblWRIReal.FK_tblWRILivro_Id = 15 )
                    AND ( SUBSTRING(LTRIM(RTRIM(SUBSTRING(dbo.tblWRIAtoObs.Observacoes,
                                                          CHARINDEX('data pedido:',
                                                                  dbo.tblWRIAtoObs.Observacoes)
                                                          + 13, 10))), 10, 7) = SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 103),
                                                                  10, 7) )
            GROUP BY ( SUBSTRING(dbo.tblWRIAtoObs.Observacoes,
                                 CHARINDEX('Data Pedido:',
                                           dbo.tblWRIAtoObs.Observacoes) + 13, 10) );
    
    WITH    Dados
              AS ( SELECT   TR.Data ,
                            ComunidadosMes = LAG(MONTH(CONVERT(DATETIME, TR.Data, 103)),
                                                 0) OVER ( PARTITION BY MONTH(CONVERT(DATETIME, TR.Data, 103)) ORDER BY TR.Comunicado ) ,
                            TR.Comunicado
                   FROM     #tb_registros AS TR
                 )
        SELECT  Dados.ComunidadosMes ,
                Dados.Data ,
                Dados.Comunicado
        FROM    Dados
        ORDER BY Dados.ComunidadosMes;




    Wesley Neves


    • Editado Wesley Neves quarta-feira, 26 de outubro de 2016 19:20 correção
    • Marcado como Resposta Ana Paula Rocha quarta-feira, 26 de outubro de 2016 19:26
    quarta-feira, 26 de outubro de 2016 19:19

Todas as Respostas

  • Olá, 

    Na linha do Group by, tente deixar assim:

    group by dbo.tblWRIAtoObs.Observacoes

    quarta-feira, 26 de outubro de 2016 17:20
  • Tente assim

    GROUP BY ( SUBSTRING(dbo.tblWRIAtoObs.Observacoes,
                         CHARINDEX('Data Pedido:', dbo.tblWRIAtoObs.Observacoes)
                         + 13, 10) ) ,
            SUBSTRING(dbo.tblWRIAtoObs.Observacoes, 33, 28);

    Dependendo do resultado que vc tem na tabela, os dados do Select devem estar no Group By


    Wesley Neves

    quarta-feira, 26 de outubro de 2016 17:29
  • nao deu certo, trouxe desta forma

    01/02/2016         201602.0120.00106684-IA-230

    01/02/2016         201602.0120.00106685-IA-040

    01/02/2016         201602.0120.00106686-IA-950

    01/03/2016         201512.0710.00095247-IA-081

    01/03/2016         201512.0714.00095349-IA-670

    01/03/2016         201512.1014.00096390-IA-920

    01/03/2016         201512.1015.00096408-IA-640

    01/03/2016         201512.1609.00097574-IA-430

    01/03/2016         201512.1610.00097611-IA-480

    01/03/2016         201512.1613.00097697-IA-420

    01/03/2016         201601.1316.00100983-IA-580

    01/03/2016         201601.1316.00100987-IA-810

    01/03/2016         201601.1316.00100988-IA-620

    01/03/2016         201601.1316.00100992-IA-490

    quarta-feira, 26 de outubro de 2016 17:46
  • Deleted
    quarta-feira, 26 de outubro de 2016 17:47
  • Ola

    Preciso que chegar no objetivo de ter todos os comunicados agrupados pelo mes,

    exemplo:

    01/2016               201602.0120.00106684-IA-230

                  201602.0120.00106685-IA-040

            201602.0120.00106686-IA-950

    02/2016

             201602.0120.00106684-IA-230

            201602.0120.00106685-IA-040

             201602.0120.00106686-IA-950

    03/2016

            201602.0120.00106684-IA-230

             201602.0120.00106685-IA-040

            201602.0120.00106686-IA-950



    quarta-feira, 26 de outubro de 2016 17:53
  • Esse resultado que vc deseja o grup by não ira resolver
    acredito que vc possa trabalhar com Classificadores 
    Fiz um exemplo com seus dados

    ou Acredito qye vc queira seus dados em um formato de PIVOT

    segue um exemplo com Classificadores
    IF ( OBJECT_ID('TEMPDB..#tb_registros') IS NOT NULL )
        DROP TABLE #tb_registros;	
    
    
    CREATE TABLE #tb_registros
        (
          Data VARCHAR(MAX) ,
          Comunicado VARCHAR(MAX)
        );
    
    
    
    INSERT  INTO #tb_registros
            ( Data ,
              Comunicado
            )
            SELECT  ( SUBSTRING(dbo.tblWRIAtoObs.Observacoes,
                                CHARINDEX('Data Pedido:',
                                          dbo.tblWRIAtoObs.Observacoes) + 13, 10) ) AS data ,
                    SUBSTRING(dbo.tblWRIAtoObs.Observacoes, 33, 28) AS Comunicado
            FROM    dbo.vwWRIAtosParticipantes
                    INNER JOIN dbo.tblWRIAtosNegocios ON dbo.tblWRIAtosNegocios.PK_ID = dbo.vwWRIAtosParticipantes.FK_tblWRIAtosNegocios_Id
                    INNER JOIN dbo.tblWRIAtos ON dbo.tblWRIAtos.PK_Id = dbo.tblWRIAtosNegocios.FK_tblWRIAtos_Id
                    INNER JOIN dbo.tblWRIReal ON dbo.tblWRIReal.PK_Id = dbo.tblWRIAtos.FK_tblWRIReal_Id
                    INNER JOIN dbo.tblWRILivro ON dbo.tblWRILivro.PK_Id = dbo.tblWRIReal.FK_tblWRILivro_Id
                    INNER JOIN dbo.tblWRIAtoObs ON dbo.tblWRIAtoObs.FK_tblWRIAtos_Id = dbo.tblWRIAtos.PK_Id
            WHERE   ( dbo.tblWRIReal.FK_tblWRILivro_Id = 15 )
                    AND ( SUBSTRING(LTRIM(RTRIM(SUBSTRING(dbo.tblWRIAtoObs.Observacoes,
                                                          CHARINDEX('data pedido:',
                                                                  dbo.tblWRIAtoObs.Observacoes)
                                                          + 13, 10))), 10, 7) = SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 103),
                                                                  10, 7) )
            GROUP BY ( SUBSTRING(dbo.tblWRIAtoObs.Observacoes,
                                 CHARINDEX('Data Pedido:',
                                           dbo.tblWRIAtoObs.Observacoes) + 13, 10) );
    
    WITH    Dados
              AS ( SELECT   TR.Data ,
                            ComunidadosMes = LAG(MONTH(CONVERT(DATETIME, TR.Data, 103)),
                                                 0) OVER ( PARTITION BY MONTH(CONVERT(DATETIME, TR.Data, 103)) ORDER BY TR.Comunicado ) ,
                            TR.Comunicado
                   FROM     #tb_registros AS TR
                 )
        SELECT  Dados.ComunidadosMes ,
                Dados.Data ,
                Dados.Comunicado
        FROM    Dados
        ORDER BY Dados.ComunidadosMes;




    Wesley Neves


    • Editado Wesley Neves quarta-feira, 26 de outubro de 2016 19:20 correção
    • Marcado como Resposta Ana Paula Rocha quarta-feira, 26 de outubro de 2016 19:26
    quarta-feira, 26 de outubro de 2016 19:19