2012-06-14 171 views
0

我有這個查詢,並需要添加一個新的字段。我可以做一堆連接來獲得該字段,但寧願加入一次,然後在所有其他選擇語句中使用該字段。下面是查詢:在另一個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 

所以說我想一個processeddate字段添加到第二BCCR select語句。我可以在那裏加入。我還需要將這個字段添加到第三個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