Usuário com melhor resposta
Data de Pesquisa

Pergunta
-
Bom dia
Por favor, estou criando uma consulta com objetivo de mostrar a quantidade de itens nos pedidos de venda:
Janeiro = IsNull(Sum(CONVERT(numeric,case month(t22.DocDueDate)when 01 then T11.QUANTITY end)),0),
Fevereiro = IsNull(Sum(CONVERT(numeric,case month(t22.DocDueDate)when 02 then T11.QUANTITY end)),0),
Março = IsNull(Sum(CONVERT(numeric,case month(t22.DocDueDate)when 03 then T11.QUANTITY end)),0),
Abril = IsNull(Sum(CONVERT(numeric,case month(t22.DocDueDate)when 04 then T11.QUANTITY end)),0),
Maio = IsNUll(SUM (convert(numeric, CASE MONTH (t22.DocDueDate) when 05 then T11.QUANTITY end) ),0),
Junho = IsNUll(SUM (convert(numeric, CASE MONTH (t22.DocDueDate) when 06 then T11.QUANTITY end) ),0),
Julho = IsNUll(SUM (convert(numeric, CASE MONTH (t22.DocDueDate) when 07 then T11.QUANTITY end) ),0),
Agosto = IsNUll(SUM (convert(numeric, CASE MONTH (t22.DocDueDate) when 08 then T11.QUANTITY end) ),0),
Setembro = IsNUll(SUM (convert(numeric, CASE MONTH (t22.DocDueDate) when 09 then T11.QUANTITY end) ),0),
Outubro = IsNUll(SUM (convert(numeric, CASE MONTH (t22.DocDueDate) when 10 then T11.QUANTITY end) ),0),
Novembro = IsNUll(SUM (convert(numeric, CASE MONTH (t22.DocDueDate) when 11 then T11.QUANTITY end) ),0),
Dezembro = IsNUll(SUM (convert(numeric, CASE MONTH (t22.DocDueDate) when 12 then T11.QUANTITY end) ),0)e traz o resultado assim:
Objetivo que traga o resultado a partir no mês atual não retroagir assim:
Obrigado
Respostas
-
Bom dia,
Paranhas, pelo que entendi acho que uma alternativa seria utilizar uma query dinâmica com Pivot. Ex:
declare @SQL nvarchar(max); declare @MesesIn nvarchar(max); declare @MesesCol nvarchar(max); declare @MesAux integer; declare @DataIni date; declare @DataAux date; set @MesesIn = ''; set @MesesCol = ''; set @MesAux = Month(current_timestamp); set @DataIni = dateadd(month, datediff(month, 0, current_timestamp), 0); set @DataAux = @DataIni; while @MesAux < 13 begin set @MesesIn = @MesesIn + ', [' + cast(@MesAux as nvarchar) + ']' set @MesesCol = @MesesCol + ', ' + datename(month, @DataAux) + ' = [' + cast(@MesAux as nvarchar) + ']' set @MesAux = @MesAux + 1 set @DataAux = dateadd(month, 1, @DataAux) end set @SQL = 'select ' + stuff(@MesesCol, 1, 2, '') + ' from ( select month(t22.DocDueDate) as Mes, t11.Quantity from Tabela22 as t22 ' + 'inner join Tabela11 as t11 on t11.DocID = t22.DocID ' + 'where t22.DocDueDate >= ''' + cast(@DataIni as nvarchar) + ''' and t22.DocDueDate < ''' + cast(@DataAux as nvarchar) + ''') as t pivot (sum(Quantity) for Mes in (' + stuff(@MesesIn, 1, 2, '') + ')) as p'; execute sp_executesql @SQL
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Robson William Silva quinta-feira, 9 de março de 2017 12:57
-
Deleted
- Marcado como Resposta Robson William Silva quinta-feira, 9 de março de 2017 12:57
Todas as Respostas
-
-
-
Bom dia,
Paranhas, pelo que entendi acho que uma alternativa seria utilizar uma query dinâmica com Pivot. Ex:
declare @SQL nvarchar(max); declare @MesesIn nvarchar(max); declare @MesesCol nvarchar(max); declare @MesAux integer; declare @DataIni date; declare @DataAux date; set @MesesIn = ''; set @MesesCol = ''; set @MesAux = Month(current_timestamp); set @DataIni = dateadd(month, datediff(month, 0, current_timestamp), 0); set @DataAux = @DataIni; while @MesAux < 13 begin set @MesesIn = @MesesIn + ', [' + cast(@MesAux as nvarchar) + ']' set @MesesCol = @MesesCol + ', ' + datename(month, @DataAux) + ' = [' + cast(@MesAux as nvarchar) + ']' set @MesAux = @MesAux + 1 set @DataAux = dateadd(month, 1, @DataAux) end set @SQL = 'select ' + stuff(@MesesCol, 1, 2, '') + ' from ( select month(t22.DocDueDate) as Mes, t11.Quantity from Tabela22 as t22 ' + 'inner join Tabela11 as t11 on t11.DocID = t22.DocID ' + 'where t22.DocDueDate >= ''' + cast(@DataIni as nvarchar) + ''' and t22.DocDueDate < ''' + cast(@DataAux as nvarchar) + ''') as t pivot (sum(Quantity) for Mes in (' + stuff(@MesesIn, 1, 2, '') + ')) as p'; execute sp_executesql @SQL
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Robson William Silva quinta-feira, 9 de março de 2017 12:57
-
Deleted
- Marcado como Resposta Robson William Silva quinta-feira, 9 de março de 2017 12:57
-
-