2012-06-14 6 views
0

이 쿼리를 사용하여 새 필드를 추가해야합니다. 필자는 필드를 가져 오기 위해 많은 조인을 할 수 있지만 한 번 가입 한 다음 다른 모든 select 문에서 필드를 사용합니다. 다음은 쿼리입니다.다른 select 문에서 한 select 문에서 선택된 필드를 사용합니까?

select 
    BCCR.DocumentNumber 
    , BCCR.BCCRDebitMemo 
    , BCCR.BCCRDate 
    , BCCR.RejectFlag 
    , BCCR.ManualEntry 
    , BCCR.DebitTotal 
    , coalesce(BCCRApproved.BCCRAmount,0) BCCRAmount 
    , coalesce(BCCRRejected.BCCRRejectedAmount,0) BCCRRejectedAmount 
    , coalesce(BCCRRejected.BCCRRejectedLines,0) BCCRRejectedLines 
from 
(select 
    h.DocumentNumber 
    , h.DebitMemo as BCCRDebitMemo 
    , h.TransmissionDate as BCCRDate 
    , 'N' RejectFlag 
    , h.ManualEntry 
    , h.DebitTotal 
from chargebackheader h 
where h.TransmissionDate >= @BeginDate 
and h.TransmissionDate <= @EndDate) BCCR left join 
(select 
    h.DocumentNumber 
    , ROUND(SUM(d.ChargebackAmount),2) as BCCRAmount 
from chargebackheader h join chargebackdetail d on 
    h.DocumentBranchPlant=d.DocumentBranchPlant 
    and h.DocumentNumber=d.DocumentNumber 
    and h.DocumentType=d.DocumentType 
where h.TransmissionDate >= @BeginDate 
and h.TransmissionDate <= @EndDate 
and d.RejectFlag = 'N' 
group by 
    h.DocumentNumber 
    , h.DebitMemo 
    , h.TransmissionDate 
    , h.ManualEntry 
    , h.DebitTotal) BCCRApproved on BCCR.DocumentNumber = BCCRApproved.DocumentNumber 

이렇게 두 번째 BCCR select 문에 processeddate 필드를 추가하려고합니다. 거기에 가입 할 수 있습니다. 또한이 필드를 세 번째 select 문에 추가해야합니다. 두 번째 명령문에서 필드를 가져 와서 세 번째 명령문에서 조인을 다시 수행하지 않고도 세 번째 명령문에 필드를 추가 할 수 있습니까?

답변

0

저장 프로 시저를 사용하려는 것처럼 보입니다.

http://msdn.microsoft.com/en-us/library/aa174792(v=sql.80).aspx

그런 다음 수 단순히 DECLARE 변수와 그들에 SELECT 결과.

http://blog.sqlauthority.com/2011/03/18/sql-server-2008-2011-declare-and-assign-variable-in-single-statement/

당신이 변수를 할당 한 후에는 저장 프로 시저의 범위 내에서 제발, 당신이 그것을 사용할 수 있습니다.

+0

이 select 문은 이미 – Jeff

+0

의 저장 프로 시저 안에 있으므로 두 번째 링크를 따라 결과를 'SELECT'변수에 넣고 그 변수를 사용하면됩니다. – Matthew