2012-06-14 133 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