简体   繁体   中英

SQL Exists returning errors

So I have the following query:

select *
from ft, pn
where exists (ft.vendnm like '%rocha%' and pn.fno = ft.fno);

Where I only want the results that respect the conditions inside parenthesis. What SQL Server tells me is:

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

And I'm not getting what's wrong with this.

The whole code for context:

select 
x.Num,
x.Cliente,
x.Zona,
sum(x.valor_1) as Valor_1,
sum(x.valor_2) as Valor_2,
x.Vendnm,
'2021-01-01 00:00:00.000' as Data1,
'2021-12-31 00:00:00.000' as Data2,
'2022-01-01 00:00:00.000' as Data3,
'2022-12-31 00:00:00.000' as Data4,
(select sum(pn.etiliquido) from pn where pn.vendedor in (3) and (pn.fdata BETWEEN '2021-01-01 00:00:00.000' AND '2021-12-31 00:00:00.000')) as VT1,
(select sum(pn.etiliquido) from pn where pn.vendedor in (3) and (pn.fdata BETWEEN '2022-01-01 00:00:00.000' AND '2022-12-31 00:00:00.000')) as VT2,
(select * from ft, pn where exists (select * from ft, pn where ft.vendnm like '%rocha%' and pn.fno = ft.fno)),


isnull(
round((((select sum(pn.etiliquido) from pn where pn.no in (select no from cl where cl.vendedor = 3) and (pn.fdata BETWEEN '2022-01-01 00:00:00.000' AND '2022-12-31 00:00:00.000') AND PN.REF NOT IN ('DESC. FINANCEIRO','PORTES','DESP.BANCARIAS','COL. COM.','VENDA VIAT CI','RESP.TRANSPORTE','RECIGLAGEM','MARK. CONT. 2013','RAPPEL13','JUROS','VENDA VIAT SI','CREDITO SRCM','RAPPEL14','FEIRAS','MARK. CONT. 2014','MARK. CONT. 2015','RAPPEL15','RAPPEL16','MARK. CONT. 2016','RAPPEL17','MARK. CONT. 2017','RAPPEL18','MARK. CONT. 2018','RAPPEL19','MARK. CONT. 2019','MARK. CONT. 2020','RAPPEL20','MARK. CONT. 2021','RAPPEL21','MARK. CONT. 2022','RAPPEL22') and  pn.usr1 not in ('12-DAS','13-DIDO','19-GIOTTO','19-GIOTTO BE-BÈ','10-ADIGRAF','27-OMYACOLOR','28-PONGO', '18-FILA', '36-TRATTO','48 - LYRA'))
-
(select sum(pn.etiliquido) from pn where pn.no in (select no from cl where cl.vendedor = 3) and (pn.fdata BETWEEN '2021-01-01 00:00:00.000' AND '2021-12-31 00:00:00.000') AND PN.REF NOT IN ('DESC. FINANCEIRO','PORTES','DESP.BANCARIAS','COL. COM.','VENDA VIAT CI','RESP.TRANSPORTE','RECIGLAGEM','MARK. CONT. 2013','RAPPEL13','JUROS','VENDA VIAT SI','CREDITO SRCM','RAPPEL14','FEIRAS','MARK. CONT. 2014','MARK. CONT. 2015','RAPPEL15','RAPPEL16','MARK. CONT. 2016','RAPPEL17','MARK. CONT. 2017','RAPPEL18','MARK. CONT. 2018','RAPPEL19','MARK. CONT. 2019','MARK. CONT. 2020','RAPPEL20','MARK. CONT. 2021','RAPPEL21','MARK. CONT. 2022','RAPPEL22') and  pn.usr1 not in ('12-DAS','13-DIDO','19-GIOTTO','19-GIOTTO BE-BÈ','10-ADIGRAF','27-OMYACOLOR','28-PONGO', '18-FILA', '36-TRATTO','48 - LYRA'))))*100,2),0) as Diftotal,


isnull(
round((((select sum(pn.etiliquido) from pn where pn.no in (select no from cl where cl.vendedor = 3) and (pn.fdata BETWEEN '2022-01-01 00:00:00.000' AND '2022-12-31 00:00:00.000') AND PN.REF NOT IN ('DESC. FINANCEIRO','PORTES','DESP.BANCARIAS','COL. COM.','VENDA VIAT CI','RESP.TRANSPORTE','RECIGLAGEM','MARK. CONT. 2013','RAPPEL13','JUROS','VENDA VIAT SI','CREDITO SRCM','RAPPEL14','FEIRAS','MARK. CONT. 2014','MARK. CONT. 2015','RAPPEL15','RAPPEL16','MARK. CONT. 2016','RAPPEL17','MARK. CONT. 2017','RAPPEL18','MARK. CONT. 2018','RAPPEL19','MARK. CONT. 2019','MARK. CONT. 2020','RAPPEL20','MARK. CONT. 2021','RAPPEL21','MARK. CONT. 2022','RAPPEL22') and  pn.usr1 not in ('12-DAS','13-DIDO','19-GIOTTO','19-GIOTTO BE-BÈ','10-ADIGRAF','27-OMYACOLOR','28-PONGO', '18-FILA', '36-TRATTO','48 - LYRA'))
-
(select sum(pn.etiliquido) from pn where pn.no in (select no from cl where cl.vendedor = 3) and (pn.fdata BETWEEN '2021-01-01 00:00:00.000' AND '2021-12-31 00:00:00.000') AND PN.REF NOT IN ('DESC. FINANCEIRO','PORTES','DESP.BANCARIAS','COL. COM.','VENDA VIAT CI','RESP.TRANSPORTE','RECIGLAGEM','MARK. CONT. 2013','RAPPEL13','JUROS','VENDA VIAT SI','CREDITO SRCM','RAPPEL14','FEIRAS','MARK. CONT. 2014','MARK. CONT. 2015','RAPPEL15','RAPPEL16','MARK. CONT. 2016','RAPPEL17','MARK. CONT. 2017','RAPPEL18','MARK. CONT. 2018','RAPPEL19','MARK. CONT. 2019','MARK. CONT. 2020','RAPPEL20','MARK. CONT. 2021','RAPPEL21','MARK. CONT. 2022','RAPPEL22') and  pn.usr1 not in ('12-DAS','13-DIDO','19-GIOTTO','19-GIOTTO BE-BÈ','10-ADIGRAF','27-OMYACOLOR','28-PONGO', '18-FILA', '36-TRATTO','48 - LYRA')))/
(select sum(pn.etiliquido) from pn where pn.no in (select no from cl where cl.vendedor = 3) and (pn.fdata BETWEEN '2021-01-01 00:00:00.000' AND '2021-12-31 00:00:00.000') AND PN.REF NOT IN ('DESC. FINANCEIRO','PORTES','DESP.BANCARIAS','COL. COM.','VENDA VIAT CI','RESP.TRANSPORTE','RECIGLAGEM','MARK. CONT. 2013','RAPPEL13','JUROS','VENDA VIAT SI','CREDITO SRCM','RAPPEL14','FEIRAS','MARK. CONT. 2014','MARK. CONT. 2015','RAPPEL15','RAPPEL16','MARK. CONT. 2016','RAPPEL17','MARK. CONT. 2017','RAPPEL18','MARK. CONT. 2018','RAPPEL19','MARK. CONT. 2019','MARK. CONT. 2020','RAPPEL20','MARK. CONT. 2021','RAPPEL21','MARK. CONT. 2022','RAPPEL22') and  pn.usr1 not in ('12-DAS','13-DIDO','19-GIOTTO','19-GIOTTO BE-BÈ','10-ADIGRAF','27-OMYACOLOR','28-PONGO', '18-FILA', '36-TRATTO','48 - LYRA')))*100,2),0) as Perc_dif

from
(
select
pn.no as Num,
(select nome from cl where cl.no=pn.no) as Cliente,
(select zona from cl where cl.no=pn.no) as Zona,
sum(pn.etiliquido) as Valor_1,
0 as Valor_2,
(select vendnm from cl where cl.no=pn.no) as Vendnm
from pn
where  (pn.usr1 not like '%'+'Portes'+'%') 
and (pn.fdata BETWEEN '2021-01-01 00:00:00.000' AND '2021-12-31 00:00:00.000') 
and pn.ref<>''  
and  pn.usr1 not in ('12-DAS','13-DIDO','19-GIOTTO','19-GIOTTO BE-BÈ','10-ADIGRAF','27-OMYACOLOR','28-PONGO', '18-FILA', '36-TRATTO','48 - LYRA')
and pn.REF not IN ('DESC. FINANCEIRO','PORTES','DESP.BANCARIAS','COL. COM.','VENDA VIAT CI','RESP.TRANSPORTE','RECIGLAGEM','MARK. CONT. 2013','RAPPEL13','JUROS','VENDA VIAT SI','CREDITO SRCM','RAPPEL14','FEIRAS','MARK. CONT. 2014','MARK. CONT. 2015','RAPPEL15','RAPPEL16','MARK. CONT. 2016','RAPPEL17','MARK. CONT. 2017','RAPPEL18','MARK. CONT. 2018','RAPPEL19','MARK. CONT. 2019','MARK. CONT. 2020','RAPPEL20','MARK. CONT. 2021','RAPPEL21','MARK. CONT. 2022','RAPPEL22')
group by pn.no

union all

select 
pn.no as Num,
(select nome from cl where cl.no=pn.no) as Cliente,
(select zona from cl where cl.no=pn.no) as Zona,
0 as Valor_1,
sum(pn.etiliquido) as Valor_2,
(select vendnm from cl where cl.no=pn.no) as Vendnm
from pn
where  (pn.usr1 not like '%'+'Portes'+'%') 
and (pn.fdata BETWEEN '2022-01-01 00:00:00.000' AND '2022-12-31 00:00:00.000')
and  pn.usr1 not in ('12-DAS','13-DIDO','19-GIOTTO','19-GIOTTO BE-BÈ','10-ADIGRAF','27-OMYACOLOR','28-PONGO', '18-FILA', '36-TRATTO','48 - LYRA')
and pn.ref<>''
and pn.REF not IN ('DESC. FINANCEIRO','PORTES','DESP.BANCARIAS','COL. COM.','VENDA VIAT CI','RESP.TRANSPORTE','RECIGLAGEM','MARK. CONT. 2013','RAPPEL13','JUROS','VENDA VIAT SI','CREDITO SRCM','RAPPEL14','FEIRAS','MARK. CONT. 2014','MARK. CONT. 2015','RAPPEL15','RAPPEL16','MARK. CONT. 2016','RAPPEL17','MARK. CONT. 2017','RAPPEL18','MARK. CONT. 2018','RAPPEL19','MARK. CONT. 2019','MARK. CONT. 2020','RAPPEL20','MARK. CONT. 2021','RAPPEL21','MARK. CONT. 2022','RAPPEL22')
group by pn.no
)
x
where x.Vendnm like '%rocha%'
group by x.Num,x.Zona,x.Cliente,x.Vendnm
order by Valor_2 desc
select ft.* 
from ft
join pn on pn.fno = ft.fno
where ft.vendnm like '%rocha%

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM