Usuário com melhor resposta
Union

Pergunta
-
Bom dia,
Galera!
Estou com o seguinte problema, veja se alguém consegue ajudar, tenho que fazer o Union abaixo porém ao rodar as querys separadas traz o resultado correto mas ao rodar com o Union da o seguinte erro
"Error converting data type varchar to numeric".
Select A.FicTecProdCodEstr, B.Prodnome, SUM(Ela.EstqLocArmazQtd) As SaldoMatPrim, A.ProdCodEstr, C.ProdNome As Produto, '' From Fic_Tec_Prod A with(nolock) Inner join Produto B With(Nolock) ON A.FicTecProdCodEstr = B.ProdCodEstr Inner join produto C With(Nolock) ON C.ProdCodEstr = A.ProdCodEstr Inner Join ESTQ_LOC_ARMAZ ELA With(Nolock) ON ELA.ProdCodEstr = A.FicTecProdCodEstr Where B.ProdCodEstr >= '13.04.0026' And B.ProdCodEstr <= '13.04.0026' And B.prodstat = 'Ativado' And (B.ProdDataValidFim is Null or B.ProdDataValidFim > getdate()) And C.prodstat = 'Ativado' And (A.fictecproddatafim Is null or a.fictecproddatafim > getdate()) And C.ProdDataValidFim Is null Group By A.FicTecProdCodEstr, B.Prodnome, A.ProdCodEstr, C.ProdNome Union Select '', '', '', '', '', SUM(Ela1.EstqLocArmazQtd/Pum.ProdUnidMedPeso) As QtdCaixa From Fic_Tec_Prod A1 with(nolock) Inner join Produto B1 With(Nolock) ON A1.FicTecProdCodEstr = B1.ProdCodEstr Inner join produto C1 With(Nolock) ON C1.ProdCodEstr = A1.ProdCodEstr Inner Join ESTQ_LOC_ARMAZ ELA1 With(Nolock) ON ELA1.ProdCodEstr = A1.ProdCodEstr Inner Join PROD_UNID_MED PUM With(Nolock) ON PUM.ProdCodEstr = B1.ProdCodEstr Where B1.ProdCodEstr >= '13.04.0026' And B1.ProdCodEstr <= '13.04.0026' And B1.prodstat = 'Ativado' And (B1.ProdDataValidFim is Null or B1.ProdDataValidFim > getdate()) And C1.prodstat = 'Ativado' And (A1.fictecproddatafim Is null or a1.fictecproddatafim > getdate()) And C1.ProdDataValidFim Is null Group By A1.FicTecProdCodEstr, B1.Prodnome, A1.ProdCodEstr, C1.ProdNome
Obrigado.
Respostas
-
Bom dia,
Leandro, o tipo de dados de todas as colunas retornadas pelas 2 querys deve ser compatível.
Acho que no seu caso você pode trocar o espaço em branco por null ou zero quando o tipo de dados é numérico, ou manter o espaço em branco e converter o valor numérico para Varchar.
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Antero Marques segunda-feira, 14 de março de 2016 15:10
- Marcado como Resposta Marcos SJ segunda-feira, 14 de março de 2016 17:12
-
Experimente mais ou menos dessa forma:
Select A.FicTecProdCodEstr, B.Prodnome, SUM(Ela.EstqLocArmazQtd) As SaldoMatPrim, A.ProdCodEstr, C.ProdNome As Produto, null as QtdCaixa From -- ... Union Select null, null, null, null, null, SUM(Ela1.EstqLocArmazQtd/Pum.ProdUnidMedPeso) As QtdCaixa From -- ...
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Marcos SJ segunda-feira, 14 de março de 2016 17:12
-
Bom dia,
Experimente dessa forma:
Select A.FicTecProdCodEstr, B.Prodnome, SUM(Ela.EstqLocArmazQtd) As SaldoMatPrim, A.ProdCodEstr, C.ProdNome As Produto, (select SUM(Ela1.EstqLocArmazQtd / Pum.ProdUnidMedPeso) from ESTQ_LOC_ARMAZ ELA1 With(Nolock), PROD_UNID_MED PUM With(Nolock) where ELA1.ProdCodEstr = A.ProdCodEstr and PUM.ProdCodEstr = B.ProdCodEstr) As QtdCaixa From Fic_Tec_Prod A with(nolock) Inner join Produto B With(Nolock) ON B.ProdCodEstr = A.FicTecProdCodEstr Inner join produto C With(Nolock) ON C.ProdCodEstr = A.ProdCodEstr Inner Join ESTQ_LOC_ARMAZ ELA With(Nolock) ON ELA.ProdCodEstr = A.FicTecProdCodEstr Where B.ProdCodEstr >= '13.04.0026' And B.ProdCodEstr <= '13.04.0026' And B.prodstat = 'Ativado' And (B.ProdDataValidFim is Null or B.ProdDataValidFim > getdate()) And C.prodstat = 'Ativado' And (A.fictecproddatafim Is null or a.fictecproddatafim > getdate()) And C.ProdDataValidFim Is null Group By A.FicTecProdCodEstr, B.Prodnome, A.ProdCodEstr, C.ProdNome
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Leandro Massena Moraes terça-feira, 15 de março de 2016 12:45
Todas as Respostas
-
Bom dia,
Leandro, o tipo de dados de todas as colunas retornadas pelas 2 querys deve ser compatível.
Acho que no seu caso você pode trocar o espaço em branco por null ou zero quando o tipo de dados é numérico, ou manter o espaço em branco e converter o valor numérico para Varchar.
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Antero Marques segunda-feira, 14 de março de 2016 15:10
- Marcado como Resposta Marcos SJ segunda-feira, 14 de março de 2016 17:12
-
-
Experimente mais ou menos dessa forma:
Select A.FicTecProdCodEstr, B.Prodnome, SUM(Ela.EstqLocArmazQtd) As SaldoMatPrim, A.ProdCodEstr, C.ProdNome As Produto, null as QtdCaixa From -- ... Union Select null, null, null, null, null, SUM(Ela1.EstqLocArmazQtd/Pum.ProdUnidMedPeso) As QtdCaixa From -- ...
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Marcos SJ segunda-feira, 14 de março de 2016 17:12
-
-
Olá,
Não sei se entendi corretamente, mas experimente dessa forma:
Select A1.FicTecProdCodEstr, B1.Prodnome, SUM(Ela1.EstqLocArmazQtd) As SaldoMatPrim, A1.ProdCodEstr, C1.ProdNome As Produto, SUM(Ela1.EstqLocArmazQtd/Pum.ProdUnidMedPeso) As QtdCaixa From Fic_Tec_Prod A1 with(nolock) Inner join Produto B1 With(Nolock) ON A1.FicTecProdCodEstr = B1.ProdCodEstr Inner join produto C1 With(Nolock) ON C1.ProdCodEstr = A1.ProdCodEstr Inner Join ESTQ_LOC_ARMAZ ELA1 With(Nolock) ON ELA1.ProdCodEstr = A1.ProdCodEstr Inner Join PROD_UNID_MED PUM With(Nolock) ON PUM.ProdCodEstr = B1.ProdCodEstr Where B1.ProdCodEstr >= '13.04.0026' And B1.ProdCodEstr <= '13.04.0026' And B1.prodstat = 'Ativado' And (B1.ProdDataValidFim is Null or B1.ProdDataValidFim > getdate()) And C1.prodstat = 'Ativado' And (A1.fictecproddatafim Is null or a1.fictecproddatafim > getdate()) And C1.ProdDataValidFim Is null Group By A1.FicTecProdCodEstr, B1.Prodnome, A1.ProdCodEstr, C1.ProdNome
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
-
Experimente fazer uns testes dessa forma:
Select A.FicTecProdCodEstr, B.Prodnome, SUM(Ela.EstqLocArmazQtd) As SaldoMatPrim, A.ProdCodEstr, C.ProdNome As Produto, (select SUM(Ela1.EstqLocArmazQtd / Pum.ProdUnidMedPeso) from ESTQ_LOC_ARMAZ ELA1 With(Nolock) where ELA1.ProdCodEstr = A.ProdCodEstr) As QtdCaixa From Fic_Tec_Prod A with(nolock) Inner join Produto B With(Nolock) ON B.ProdCodEstr = A.FicTecProdCodEstr Inner join produto C With(Nolock) ON C.ProdCodEstr = A.ProdCodEstr Inner Join ESTQ_LOC_ARMAZ ELA With(Nolock) ON ELA.ProdCodEstr = A.FicTecProdCodEstr Inner Join PROD_UNID_MED PUM With(Nolock) ON PUM.ProdCodEstr = B.ProdCodEstr Where B.ProdCodEstr >= '13.04.0026' And B.ProdCodEstr <= '13.04.0026' And B.prodstat = 'Ativado' And (B.ProdDataValidFim is Null or B.ProdDataValidFim > getdate()) And C.prodstat = 'Ativado' And (A.fictecproddatafim Is null or a.fictecproddatafim > getdate()) And C.ProdDataValidFim Is null Group By A.FicTecProdCodEstr, B.Prodnome, A.ProdCodEstr, C.ProdNome
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
Bom dia,
Está retornando a mensagem: Multiple columns are specified in an aggregated expression containing an outer reference. If an expression being aggregated contains an outer reference, then that outer reference must be the only column referenced in the expression.
-
Bom dia,
Experimente dessa forma:
Select A.FicTecProdCodEstr, B.Prodnome, SUM(Ela.EstqLocArmazQtd) As SaldoMatPrim, A.ProdCodEstr, C.ProdNome As Produto, (select SUM(Ela1.EstqLocArmazQtd / Pum.ProdUnidMedPeso) from ESTQ_LOC_ARMAZ ELA1 With(Nolock), PROD_UNID_MED PUM With(Nolock) where ELA1.ProdCodEstr = A.ProdCodEstr and PUM.ProdCodEstr = B.ProdCodEstr) As QtdCaixa From Fic_Tec_Prod A with(nolock) Inner join Produto B With(Nolock) ON B.ProdCodEstr = A.FicTecProdCodEstr Inner join produto C With(Nolock) ON C.ProdCodEstr = A.ProdCodEstr Inner Join ESTQ_LOC_ARMAZ ELA With(Nolock) ON ELA.ProdCodEstr = A.FicTecProdCodEstr Where B.ProdCodEstr >= '13.04.0026' And B.ProdCodEstr <= '13.04.0026' And B.prodstat = 'Ativado' And (B.ProdDataValidFim is Null or B.ProdDataValidFim > getdate()) And C.prodstat = 'Ativado' And (A.fictecproddatafim Is null or a.fictecproddatafim > getdate()) And C.ProdDataValidFim Is null Group By A.FicTecProdCodEstr, B.Prodnome, A.ProdCodEstr, C.ProdNome
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Leandro Massena Moraes terça-feira, 15 de março de 2016 12:45
-