0

このクエリがあり、新しいフィールドを追加する必要があります。フィールドを取得するために多数の結合を実行することもできますが、一度結合してから、他のすべての選択ステートメントでフィールドを使用することをお勧めします。以下はクエリです。

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

それで、2 番目の BCCR 選択ステートメントに、processeddate フィールドを追加したいとします。私はそこに参加することができました。また、このフィールドを 3 番目の select ステートメントに追加する必要があります。3 番目のステートメントで結合をやり直すことなく、2 番目のステートメントからフィールドを取得して 3 番目のステートメントに追加できますか?

4

1 に答える 1

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/

変数を割り当てたら、ストアド プロシージャのスコープ内で自由に使用できます。

于 2012-06-14T20:09:08.860 に答える