使用在另一个select语句中的一个select语句中选择的字段?

时间:2012-06-14 20:05:47

标签: sql select join

我有这个查询,需要为它添加一个新字段。我可以做一堆连接来获取字段,但是宁愿连接一次然后在所有其他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语句中。我可以从第二个语句中取出字段并将其添加到第三个语句而不必重做第三个语句中的连接吗?

1 个答案:

答案 0 :(得分: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/

分配变量后,您可以在存储过程的范围内随意使用它。