2016-11-24 1 views
0

저는 매우 큰 선택을 가지고 있으며, 두 가지 결과를 결합해야합니다. 그러나 그것을 작동시키는 방법을 찾을 수 없습니다. 코드가 무엇인가 같다 :foxpro가 결과를 선택하여 결합합니다.

(select isnull(sum(fn.tqq),0) from fn where fn.icecream in (1,2,3,4,5,6,7,8,9) and (fn.fdata BETWEEN #2# AND #3#) and fn.usr1 not like '%'+'CHOC'+'%') as Total1, 

(select isnull(sum(fn.tqq),0) from fn where fn.icecream in (1,2,3,4,5,6,7,8,9) and (fn.fdata BETWEEN #4# AND #5#) and pn.usr1 not like '%'+'Portes'+'%') as Total2, 

것은, 내가 icream 3, 7, 그리고 아이스크림 8, 9 어떤 생각의 결과, 결국에 가입해야?

답변

0

VFP로 태그 지정되었지만 샘플 SQL은 VFP 쿼리 또는 MS SQL 서버 쿼리가 아닌 것으로 들립니다.

Select t1.Total1, t2.Total2 From ; 
    (Select Nvl(Sum(fn.tqq),0) As Total1 ; 
    from fn ; 
    where fn.icecream In (1,2,3,4,5,6,7,8,9) And ; 
    (fn.fdata Between #2# And #3#) And ; 
    fn.usr1 Not Like '%'+'CHOC'+'%') t1, ; 
    (Select Nvl(Sum(fn.tqq),0) As Total2 ; 
    from fn ; 
    where fn.icecream In (1,2,3,4,5,6,7,8,9) And ; 
    (fn.fdata Between #4# And #5#) And ; 
    fn.usr1 Not Like '%'+'Portes'+'%') t2 

또는 (더 VFP 특정 쿼리) : 그러나

Select ; 
    Sum(Iif(InList(icecream,1,2,3,4,5,6,7,8,9) And ; 
     Between(fdata, #2# , #3#) And ; 
     !('CHOC'$usr1), tqq, 0)) as Total1, ; 
    Sum(Iif(InList(icecream,1,2,3,4,5,6,7,8,9) And ; 
     Between(fdata, #4# , #5#) And ; 
     !('Portes'$usr1), tqq, 0)) as Total2 ; 
    from fn 

읽기를 잠시 우리가 생각하면 그 다음 처음과 같은 코드에서 제안하는 것을 얻을 수있는 유효한 SQL이었다 마지막 문장은 당신이 정말로 원하는 것을 혼란스럽게합니다. 위의 내용이 귀하가 수행 한 내용이 아니라면, 우리가 제공하고자하는 샘플 데이터와 결과를 제공하십시오.

+0

이 부분에 대해 궁금한 점이 있으십니까? 정말로 손을 사용할 수 있습니다 :) – questionador

+0

이 답장을 추가 할 때 새로운 추가 기능이있는 것으로 나타났습니다. 미안하지만 당신이 보여준 코드는 내가 사용하는 데이터베이스 (VFP, PostgreSQL, MS SQL 서버, SQLite 및 기타)에서 유효한 SQL이 아닙니다. 어떤 데이터베이스입니까? 그것은 당신이하려는 것을 이해하는 것을 더 어렵게 만듭니다. 어쩌면 대신 샘플 데이터와 예상 출력을 제공해야합니다 (물론 어떤 데이터베이스를 사용하고 있는지). –

+0

나는 그것의 시각적 인 여우 프로, 그 어딘가에 SQL과 믿습니다 ...하지만 SQL은 작동합니다. 나는 일종의 그것을 밖으로 일했지만, 원시인 방식으로, 만약 당신이 어떤 thougth ... – questionador

0

확인, 미안 종류의 지금, 그래서 여기에 전체 코드 패배 : 내가 무슨 일이 원하는 것은, 공급 업체

select 
X.VENDEDOR AS VENDEDOR, 
X.VENDNM AS VENDNM, 
X.NO AS NO, 
X.nome AS nome, 
isnull(sum(x.qtt_1),0) as Qtt_1, 
isnull(sum(x.qtt_2),0) as Qtt_2, 
#2# as Data1, 
#3# as Data2, 
#4# as Data3, 
#5# as Data4, 
(SELECT DESIGN FROM ST WHERE ST.forref ='*br1000*') AS ARTIGO, 

(select isnull(sum(pn.qtt),0) from pn where pn.vendedor in (1,2,3,4,5,6,7,8,9) and (pn.fdata BETWEEN #2# AND #3#) and pn.usr1 not like '%'+'Portes'+'%') as Total1, 

(select isnull(sum(pn.qtt),0) from pn where pn.vendedor in (1,2,3,4,5,6,7,8,9) and (pn.fdata BETWEEN #4# AND #5#) and pn.usr1 not like '%'+'Portes'+'%') as Total2, 

((select isnull(sum(pn.qtt),0) from pn where pn.vendnm like x.vendnm and (pn.fdata BETWEEN #4# AND #5#) and pn.usr1 not like '%'+'Portes'+'%')-(select isnull(sum(pn.qtt),0) from pn where pn.vendnm like x.vendnm and (pn.fdata BETWEEN #2# AND #3#) and pn.usr1 not like '%'+'Portes'+'%')) as Dif_Total_Vend, 

isnull(
round((((select sum(pn.qtt) from pn where pn.vendedor in (1,2,3,4,5,6,7,8,9) and (pn.fdata BETWEEN #4# AND #5#) and pn.usr1 not like '%'+'Portes'+'%') 
- 
(select sum(pn.qtt) from pn where pn.vendedor in (1,2,3,4,5,6,7,8,9) and (pn.fdata BETWEEN #2# AND #3#) and pn.usr1 not like '%'+'Portes'+'%'))/ 
(select sum(pn.qtt) from pn where pn.vendedor in (1,2,3,4,5,6,7,8,9) and (pn.fdata BETWEEN #2# AND #3#) and pn.usr1 not like '%'+'Portes'+'%'))*100,2),0) as Perc_Dif, 

isnull(
round((((select sum(pn.qtt) from pn where pn.vendnm like x.vendnm and (pn.fdata BETWEEN #4# AND #5#) and pn.usr1 not like '%'+'Portes'+'%') 
- 
(select sum(pn.qtt) from pn where pn.vendnm like x.vendnm and (pn.fdata BETWEEN #2# AND #3#) and pn.usr1 not like '%'+'Portes'+'%'))/ 
(select sum(pn.qtt) from pn where pn.vendnm like x.vendnm and (pn.fdata BETWEEN #2# AND #3#) and pn.usr1 not like '%'+'Portes'+'%'))*100,2),0) as Perc_Dif_Vend 

from 
(
select 
pn.vendedor as Vendedor, 
pn.vendnm as Vendnm, 
pn.no as No, 
(select nome from cl where cl.no=pn.no) as nome, 
pn.qtt as Qtt_1, 
0 as Qtt_2 
from pn 
where (pn.fdata BETWEEN #2# AND #3#) 

union all 

select 
pn.vendedor as Vendedor, 
pn.vendnm as Vendnm, 
pn.no as No, 
(select nome from cl where cl.no=pn.no) as nome, 
0 as Qtt_1, 
pn.qtt as Qtt_2 
from pn 
where (pn.fdata BETWEEN #4# AND #5#) AND (pn.Vendedor '3' == pn.Vendedor '7') 
) 
x 

group by x.no,x.nome, x.vendedor,x.vendnm 
order by x.nome,x.vendedor 

입니다

'3'숫자 '7'교체오고, 숫자 '8'이 '9'를 대체했습니다. 내가 원하는 것은 숫자 '3'과 '7'의 결과가 하나 (숫자 '8'과 '9'와 같은 것) 인 경우 중복 결과가 나타납니다.

관련 문제