Usuário com melhor resposta
Union resultado na mesma linha

Pergunta
-
Bom dia,
Galera!
Será que podem ajudar nesta consulta, fiz o seguinte union porém o resultado está trazendo em duas linhas e preciso que venha em única linha, segue abaixo exemplo:
Select P.PRODCODESTR As CodProduto, P.PRODNOME As NomeProduto, SUM(IME.ItMovEstqQtdProd) As 'QtdEntrada', 0 As QtdSaida, Saldo_Atual = (SELECT Top 1 SaldoEstqDataQtd FROM SALDO_ESTQ_DATA S WITH(NOLOCK) WHERE P.ProdCodEstr = S.ProdCodEstr And S.SaldoEstqData >= '20160701' And S.SaldoEstqData <= '20160710' and S.EmpCod = '1' order by SaldoEstqData desc ) From PRODUTO P WITH(NOLOCK), ITEM_MOV_ESTQ IME WITH(NOLOCK), Mov_Estq ME WITH(NOLOCK), TIPO_LANC TL WITH(NOLOCK) Where TL.TIPOLANCOPER ='Entrada' And ME.MovEstqDataEmissao>= '20160701' And ME.MovEstqDataEmissao<= '20160710' And P.ProdCodEstr in ('12.01.0008','12.01.0071','12.01.0011','12.01.0010','12.01.0003','12.01.0046','12.01.0043','12.01.0068','12.01.0069','12.01.0070', '12.01.0078','12.01.0009','12.01.0035','12.01.0089','12.01.0036','12.01.0012','15.20.0032','15.20.0033','15.20.0047','15.20.0048', '15.20.0088','15.20.0099','12.01.0042','12.01.0116','15.20.0118','15.20.0119') And ME.MovEstqChv = IME.MovEstqChv And TL.TipoLancCod = ME.TipoLancCod And IME.ProdCodEstr = P.ProdCodEstr Group By P.PRODCODESTR, P.PRODNOME UNION ALL Select P1.PRODCODESTR , P1.PRODNOME , 0, SUM(IME1.ItMovEstqQtdProd), Saldo_Atual = (SELECT Top 1 SaldoEstqDataQtd FROM SALDO_ESTQ_DATA S WITH(NOLOCK) WHERE P1.ProdCodEstr = S.ProdCodEstr And S.SaldoEstqData >= '20160701' And S.SaldoEstqData <= '20160710' and S.EmpCod = '1' order by SaldoEstqData desc ) From PRODUTO P1 WITH(NOLOCK), ITEM_MOV_ESTQ IME1 WITH(NOLOCK), Mov_Estq ME1 WITH(NOLOCK), TIPO_LANC TL1 WITH(NOLOCK) Where TL1.TIPOLANCOPER ='Saida' And ME1.MovEstqDataEmissao>= '20160701' And ME1.MovEstqDataEmissao<= '20160710' And P1.ProdCodEstr in ('12.01.0008','12.01.0071','12.01.0011','12.01.0010','12.01.0003','12.01.0046','12.01.0043','12.01.0068','12.01.0069','12.01.0070', '12.01.0078','12.01.0009','12.01.0035','12.01.0089','12.01.0036','12.01.0012','15.20.0032','15.20.0033','15.20.0047','15.20.0048', '15.20.0088','15.20.0099','12.01.0042','12.01.0116','15.20.0118','15.20.0119') And ME1.MovEstqChv = IME1.MovEstqChv And TL1.TipoLancCod = ME1.TipoLancCod And IME1.ProdCodEstr = P1.ProdCodEstr Group By P1.PRODCODESTR, P1.PRODNOME Order By P.ProdCodEstr
Respostas
-
Deleted
- Marcado como Resposta Leandro Massena Moraes quinta-feira, 18 de agosto de 2016 13:27
-
Deleted
- Marcado como Resposta Leandro Massena Moraes quinta-feira, 18 de agosto de 2016 19:46
Todas as Respostas
-
Deleted
- Marcado como Resposta Leandro Massena Moraes quinta-feira, 18 de agosto de 2016 13:27
-
-
-
José a deixa te fazer outra pergunta referente a esta mesma query:
Está restrição são os códigos dos produtos, verifiquei a consulta e está rápido a execução, é possível trazer zero mesmo que não houve movimentação em algum campo contendo baseado nestes produtos da restrição
Agora a consutlta está desta forma:
Select
P.PRODCODESTR As CodProduto,
P.PRODNOME As NomeProduto,
Saldo_Anterior = (SELECT Top 1 SaldoEstqDataQtd FROM SALDO_ESTQ_DATA S WITH(NOLOCK) WHERE P.ProdCodEstr = S.ProdCodEstr And S.SaldoEstqData < '20160701' and S.EmpCod = '1' order by SaldoEstqData desc ),
SUM(Case When TL.TIPOLANCOPER ='Entrada' Then IME.ItMovEstqQtdProd Else 0 End) As 'QtdEntrada',
SUM(Case When TL.TIPOLANCOPER ='Saida' Then IME.ItMovEstqQtdProd Else 0 End) As 'QtdSaida',
Saldo_Atual = (SELECT Top 1 SaldoEstqDataQtd FROM SALDO_ESTQ_DATA S WITH(NOLOCK) WHERE P.ProdCodEstr = S.ProdCodEstr And S.SaldoEstqData >= '20160701' And S.SaldoEstqData <= '20160710' and S.EmpCod = '1' order by SaldoEstqData desc )
From
PRODUTO P WITH(NOLOCK),
ITEM_MOV_ESTQ IME WITH(NOLOCK),
Mov_Estq ME WITH(NOLOCK),
TIPO_LANC TL WITH(NOLOCK)
Where
ME.MovEstqDataEmissao>= '20160701'
And ME.MovEstqDataEmissao<= '20160710'
And P.ProdCodEstr in ('12.01.0008','12.01.0071','12.01.0011','12.01.0010','12.01.0003','12.01.0046','12.01.0043','12.01.0068','12.01.0069','12.01.0070',
'12.01.0078','12.01.0009','12.01.0035','12.01.0089','12.01.0036','12.01.0012','15.20.0032','15.20.0033','15.20.0047','15.20.0048',
'15.20.0088','15.20.0099','12.01.0042','12.01.0116','15.20.0118','15.20.0119')
And ME.MovEstqChv = IME.MovEstqChv
And TL.TipoLancCod = ME.TipoLancCod
And IME.ProdCodEstr = P.ProdCodEstr
Group By
P.PRODCODESTR,
P.PRODNOME
-
-
-
-
ME.TipoLancCod uso para fazer junção com a ME.TipoLancCod e TL.TIPOLANCOPER definir se é entrada ou saída, mesmo alterando o as junções da cláusula Where não traz todos os registros,
Select P.PRODCODESTR As CodProduto, P.PRODNOME As NomeProduto, Saldo_Anterior = (SELECT Top 1 SaldoEstqDataQtd FROM SALDO_ESTQ_DATA S WITH(NOLOCK) WHERE P.ProdCodEstr = S.ProdCodEstr And S.SaldoEstqData < '20160701' and S.EmpCod = '1' order by SaldoEstqData desc ), SUM(Case When TL.TIPOLANCOPER ='Entrada' Then IME.ItMovEstqQtdProd Else 0 End) As 'QtdEntrada', SUM(Case When TL.TIPOLANCOPER ='Saida' Then IME.ItMovEstqQtdProd Else 0 End) As 'QtdSaida', Saldo_Atual = (SELECT Top 1 SaldoEstqDataQtd FROM SALDO_ESTQ_DATA S WITH(NOLOCK) WHERE P.ProdCodEstr = S.ProdCodEstr And S.SaldoEstqData >= '20160701' And S.SaldoEstqData <= '20160710' and S.EmpCod = '1' order by SaldoEstqData desc ) From PRODUTO P left join ITEM_MOV_ESTQ IME on IME.ProdCodEstr = P.ProdCodEstr left join Mov_Estq ME on ME.MovEstqChv = IME.MovEstqChv left join TIPO_LANC TL on TL.TipoLancCod = ME.TipoLancCod Where (ME.MovEstqDataEmissao is null or (ME.MovEstqDataEmissao>= '20160701' And ME.MovEstqDataEmissao<= '20160710')) And P.ProdCodEstr in ('12.01.0008','12.01.0071','12.01.0011','12.01.0010','12.01.0003','12.01.0046','12.01.0043','12.01.0068','12.01.0069','12.01.0070', '12.01.0078','12.01.0009','12.01.0035','12.01.0089','12.01.0036','12.01.0012','15.20.0032','15.20.0033','15.20.0047','15.20.0048', '15.20.0088','15.20.0099','12.01.0042','12.01.0116','15.20.0118','15.20.0119') --And ME.MovEstqChv = IME.MovEstqChv --And TL.TipoLancCod = IME.TipoLancCod --And IME.ProdCodEstr = P.ProdCodEstr Group By P.PRODCODESTR , P.PRODNOME
-
Deleted
- Marcado como Resposta Leandro Massena Moraes quinta-feira, 18 de agosto de 2016 19:46
-
-