Usuário com melhor resposta
Cada expressão GROUP BY deve conter pelo menos uma coluna que não seja referência externa

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
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
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
-