Usuário com melhor resposta
Uso de CASE inadequado

Pergunta
-
Olá, pessoal!
Por gentileza, estou desenvolvendo o seguinte comando, porém infelizmente o SQL Server me acusa erro nas linhas onde utilizo CASE, porém não sei como seria a melhor forma de utilizar além dessa.
Agradeço desde já pela atenção.declare @quantidade int = 5 declare @DocEntry int = 2 declare @CodeItem varchar(200) = '110CASA' Select [ItemCode], [Dscription], [Price], [Quantity], [FreeTxt], [QuantidadeEmbalagem], [variavel] INTO #TMP FROM (select T1.[ItemCode], t1.[Dscription], t1.[Price], t1.[Quantity], t1.[FreeTxt], @quantidade as [QuantidadeEmbalagem], ( cast(t1.[Quantity] as decimal)/cast(@quantidade as decimal)) as variavel from OQUT T0 INNER JOIN QUT1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode where T0.DocEntry = @DocEntry and T1.ItemCode = @CodeItem) T0 DECLARE C1 CURSOR FOR SELECT * FROM #TMP; DECLARE @ItemCode nvarchar(30) , @Dscription nvarchar(200) , @Price decimal(8,2) , @Quantity nvarchar(25) , @FreeTxt nvarchar(200) , @QuantidadeEmbalagem int , @variavel decimal open c1 fetch next from c1 into @ItemCode, @Dscription, @Price, @Quantity, @FreeTxt, @QuantidadeEmbalagem, @variavel declare @count int = 1 CASE When @variavel % 2 = 0 then while @count < (cast(@variavel as decimal)) begin insert into #TMP values (@ItemCode, @Dscription, @Price, @Quantity, @FreeTxt, @QuantidadeEmbalagem, @variavel) set @count = @count + 1 end ELSE while @count <= (cast(@variavel as decimal)) begin insert into #TMP values (@ItemCode, @Dscription, @Price, @Quantity, @FreeTxt, @QuantidadeEmbalagem, @variavel) set @count = @count + 1 end END as Lo close c1 deallocate c1 select * from #TMP drop table #TMP
Respostas
-
Boa tarde,
Acho que no local onde está você pode utilizar um If no lugar do Case. Pelo que entendi do seu código acho que o trecho do Case poderia ficar da seguinte forma:
declare @count int; if @variavel % 2 = 0 set @count = 1 else set @count = 0; while @count < (cast(@variavel as decimal)) begin insert into #TMP values (@ItemCode, @Dscription, @Price, @Quantity, @FreeTxt, @QuantidadeEmbalagem, @variavel) set @count = @count + 1 end
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 23 de novembro de 2018 17:37
Todas as Respostas
-
Boa tarde,
Acho que no local onde está você pode utilizar um If no lugar do Case. Pelo que entendi do seu código acho que o trecho do Case poderia ficar da seguinte forma:
declare @count int; if @variavel % 2 = 0 set @count = 1 else set @count = 0; while @count < (cast(@variavel as decimal)) begin insert into #TMP values (@ItemCode, @Dscription, @Price, @Quantity, @FreeTxt, @QuantidadeEmbalagem, @variavel) set @count = @count + 1 end
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 23 de novembro de 2018 17:37
-