none
Cada expressão GROUP BY deve conter pelo menos uma coluna que não seja referência externa RRS feed

  • Pergunta

  • olá!

    tenho essa query

    SELECT 
    --DATEPART(ww, SE.Data) as Semana, 
    	Convert(varchar, DATEADD(DAY, 1 - DATEPART(DW, SE.Data), SE.Data)) + ' - ' +
    	Convert(varchar, DATEADD(DAY, 7 - DATEPART(DW, SE.Data), SE.Data)) as 'Periodo Semana',
    P.Descricao, C.Descricao, M.Descricao,
    sum(SE.Quantidade) Quantidade, SE.PrecoUnitario
    FROM FAT_SUPRIMENTO_ENTRADA SE
    INNER JOIN DAT_CLIENTE C ON C.Id = SE.DatClienteId
    INNER JOIN DAT_MATERIAL M ON M.Id = SE.DatMaterialId
    INNER JOIN DAT_PROJETO P ON P.Id = SE.DatProjetoId
    GROUP BY C.Descricao, P.Descricao, M.Descricao, SE.PrecoUnitario, 'Periodo Semana'


    e ocorre o erro ao executar essa query: Cada expressão GROUP BY deve conter pelo menos uma coluna que não seja referência externa

    se subtituir a coluna 'Periodo Semana' no group by pelo nome da coluna na tabela, não ocorre o erro, porém ele considera o valor do banco, e não o valor dessa nova coluna e com isso a minha função de agregação SUM não funciona.. o que eu gostaria, era que o meu resultado fosse:

    2018-01-28 - 2018-02-03 PROJETO 2 CLIENTE 2 AREIA 20 8,75

    e não:

    2018-01-28 - 2018-02-03 PROJETO 2 CLIENTE 2 AREIA 10 8,75
    2018-01-28 - 2018-02-03 PROJETO 2 CLIENTE 2 AREIA 10 8,75

    quinta-feira, 31 de maio de 2018 17:26

Respostas

  • Boa tarde,

    Experimente fazer uns testes dessa forma:

    SELECT 
        CA.PeriodoSemana as [Periodo Semana],
        P.Descricao, 
        C.Descricao, 
        M.Descricao,
        sum(SE.Quantidade) Quantidade, 
        SE.PrecoUnitario
    FROM FAT_SUPRIMENTO_ENTRADA SE
    INNER JOIN DAT_CLIENTE C ON C.Id = SE.DatClienteId
    INNER JOIN DAT_MATERIAL M ON M.Id = SE.DatMaterialId
    INNER JOIN DAT_PROJETO P ON P.Id = SE.DatProjetoId
    CROSS APPLY
    (
        SELECT
    	Convert(varchar, DATEADD(DAY, 1 - DATEPART(DW, SE.Data), SE.Data)) + ' - ' +
    	Convert(varchar, DATEADD(DAY, 7 - DATEPART(DW, SE.Data), SE.Data)) as PeriodoSemana
    ) AS CA
    GROUP BY 
        C.Descricao, 
        P.Descricao, 
        M.Descricao, 
        SE.PrecoUnitario, 
        CA.PeriodoSemana
    

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 31 de maio de 2018 18:12

Todas as Respostas

  • Boa tarde,

    Experimente fazer uns testes dessa forma:

    SELECT 
        CA.PeriodoSemana as [Periodo Semana],
        P.Descricao, 
        C.Descricao, 
        M.Descricao,
        sum(SE.Quantidade) Quantidade, 
        SE.PrecoUnitario
    FROM FAT_SUPRIMENTO_ENTRADA SE
    INNER JOIN DAT_CLIENTE C ON C.Id = SE.DatClienteId
    INNER JOIN DAT_MATERIAL M ON M.Id = SE.DatMaterialId
    INNER JOIN DAT_PROJETO P ON P.Id = SE.DatProjetoId
    CROSS APPLY
    (
        SELECT
    	Convert(varchar, DATEADD(DAY, 1 - DATEPART(DW, SE.Data), SE.Data)) + ' - ' +
    	Convert(varchar, DATEADD(DAY, 7 - DATEPART(DW, SE.Data), SE.Data)) as PeriodoSemana
    ) AS CA
    GROUP BY 
        C.Descricao, 
        P.Descricao, 
        M.Descricao, 
        SE.PrecoUnitario, 
        CA.PeriodoSemana
    

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 31 de maio de 2018 18:12
  • isso ai.. obrigada!!!
    quinta-feira, 31 de maio de 2018 18:13