Fórum Junção Left outer join e count #619394

17/01/2023

0

Bom dia!

Tenho estas duas Querys:

select IArv_CodPN,sum(iarv_qtde)as QtdeComp from ItemArvore
where IArv_CodPN =''552600283301''
group by IArv_CodPN
order by IArv_CodPN

select distinct pla_codpn,Cen_Descricao,Cen_PNdoCliente, Pla_CodCelula from Placas
left outer join AcbCentr on cen_codpn = Pla_CodPN
where pla_codpn in(select distinct pla_codpn from AcbPlacas
where Pla_CodPNInicial =''552600283301'')
order by Pla_CodPN

Como sou novo em SQL não sei se pode fazer a junção, eu tentei e deu um erro, como mostra abaixo e não sei como resolver.

select distinct pla_codpn,Cen_Descricao,Cen_PNdoCliente, Pla_CodCelulaSMD, sum(iarv_qtde)as QtdeComp from Placas
left outer join AcbCentr on cen_codpn = Pla_CodPN
left outer join AcbItemArvore on IArv_CodPN = Pla_CodPNInicial
where pla_codpn in(select distinct pla_codpn from AcbPlacas
where Pla_CodPNInicial =''552600283301'')
order by Pla_CodPNInicial

erro:
Msg 8120, Level 16, State 1, Line 12
Column ''AcbPlacas.Pla_CodPN'' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Msg 145, Level 15, State 1, Line 12
ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
Vagner

Vagner

Responder

Post mais votado

17/01/2023

quando usadas as funções de agregação (sum, count, avg, max. min, etc...) use GROUP BY em vez de usar DISTINCT
na primeira parte você cita as tabelas ItemArvore, Placas e AcbPlacas.
Na segunda parte não tem mais a tabela ItemArvore; agora é AcbItemArvore.
Tentei adivinhar algumas coisas e saiu a instrução abaixo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
select
    pl.pla_codpn, acen.Cen_Descricao, acen.Cen_PNdoCliente, pl.Pla_CodCelulaSMD,
    sum(aia.iarv_qtde) as QtdeComp
from
    Placas pl -- aqui é Placas mesmo ?
left outer join
    AcbCentr acen
    on acen.cen_codpn = pl.Pla_CodPN
left outer join
    AcbItemArvore aia
    on aia.IArv_CodPN = pl.Pla_CodPNInicial
where
    pl.pla_codpn in (
                        select distinct pla_codpn
                        from AcbPlacas -- aqui é AcbPlacas mesmo ?
                        where Pla_CodPNInicial = '552600283301'
                    )
group by
    pl.pla_codpn, acen.Cen_Descricao, acen.Cen_PNdoCliente, pl.Pla_CodCelulaSMD
order by
    Pla_CodPNInicial

Emerson Nascimento

Emerson Nascimento
Responder

Gostei + 1

Mais Posts

17/01/2023

Vagner

quando usadas as funções de agregação (sum, count, avg, max. min, etc...) use GROUP BY em vez de usar DISTINCT
na primeira parte você cita as tabelas ItemArvore, Placas e AcbPlacas.
Na segunda parte não tem mais a tabela ItemArvore; agora é AcbItemArvore.
Tentei adivinhar algumas coisas e saiu a instrução abaixo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
select
    pl.pla_codpn, acen.Cen_Descricao, acen.Cen_PNdoCliente, pl.Pla_CodCelulaSMD,
    sum(aia.iarv_qtde) as QtdeComp
from
    Placas pl -- aqui é Placas mesmo ?
left outer join
    AcbCentr acen
    on acen.cen_codpn = pl.Pla_CodPN
left outer join
    AcbItemArvore aia
    on aia.IArv_CodPN = pl.Pla_CodPNInicial
where
    pl.pla_codpn in (
                        select distinct pla_codpn
                        from AcbPlacas -- aqui é AcbPlacas mesmo ?
                        where Pla_CodPNInicial = '552600283301'
                    )
group by
    pl.pla_codpn, acen.Cen_Descricao, acen.Cen_PNdoCliente, pl.Pla_CodCelulaSMD
order by
    Pla_CodPNInicial

Ler Mais...

Responder

Gostei + 0

17/01/2023

Vagner

quando usadas as funções de agregação (sum, count, avg, max. min, etc...) use GROUP BY em vez de usar DISTINCT
na primeira parte você cita as tabelas ItemArvore, Placas e AcbPlacas.
Na segunda parte não tem mais a tabela ItemArvore; agora é AcbItemArvore.
Tentei adivinhar algumas coisas e saiu a instrução abaixo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
select
    pl.pla_codpn, acen.Cen_Descricao, acen.Cen_PNdoCliente, pl.Pla_CodCelulaSMD,
    sum(aia.iarv_qtde) as QtdeComp
from
    Placas pl -- aqui é Placas mesmo ?
left outer join
    AcbCentr acen
    on acen.cen_codpn = pl.Pla_CodPN
left outer join
    AcbItemArvore aia
    on aia.IArv_CodPN = pl.Pla_CodPNInicial
where
    pl.pla_codpn in (
                        select distinct pla_codpn
                        from AcbPlacas -- aqui é AcbPlacas mesmo ?
                        where Pla_CodPNInicial = '552600283301'
                    )
group by
    pl.pla_codpn, acen.Cen_Descricao, acen.Cen_PNdoCliente, pl.Pla_CodCelulaSMD
order by
    Pla_CodPNInicial

Ler Mais...

Responder

Gostei + 0

17/01/2023

Vagner

quando usadas as funções de agregação (sum, count, avg, max. min, etc...) use GROUP BY em vez de usar DISTINCT
na primeira parte você cita as tabelas ItemArvore, Placas e AcbPlacas.
Na segunda parte não tem mais a tabela ItemArvore; agora é AcbItemArvore.
Tentei adivinhar algumas coisas e saiu a instrução abaixo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
select
    pl.pla_codpn, acen.Cen_Descricao, acen.Cen_PNdoCliente, pl.Pla_CodCelulaSMD,
    sum(aia.iarv_qtde) as QtdeComp
from
    Placas pl -- aqui é Placas mesmo ?
left outer join
    AcbCentr acen
    on acen.cen_codpn = pl.Pla_CodPN
left outer join
    AcbItemArvore aia
    on aia.IArv_CodPN = pl.Pla_CodPNInicial
where
    pl.pla_codpn in (
                        select distinct pla_codpn
                        from AcbPlacas -- aqui é AcbPlacas mesmo ?
                        where Pla_CodPNInicial = '552600283301'
                    )
group by
    pl.pla_codpn, acen.Cen_Descricao, acen.Cen_PNdoCliente, pl.Pla_CodCelulaSMD
order by
    Pla_CodPNInicial

Ler Mais...




Emerson Funcionou a sua sugestão!!! muito obrigado!!

O campo realmente é placas, eu havia inserido um acb por engano na frente da descrição!

muito obrigado
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar