tblOptyRecordsHistorical
メイン テーブルに関連するセカンダリ テーブルのレコード数をカウントできるようにする必要がありますtblOptyRecordsCurrent
。
テーブルはまったく同じで、メイン テーブルには現在の「日次スナップショット」が含まれ、セカンダリ テーブルには以前の日次スナップショットが含まれます。
次の基本的な構文を使用するフラグがいくつかあります。
(SELECT COUNT(OpportunityRecordID) AS Expr1
FROM dbo.tblOptyRecordsHistorical AS hist
WHERE (OpportunityGlobalCRMId = curr.OpportunityGlobalCRMId))
AS prevEntries,
これはうまくいきます。しかし、1 つのフラグとして、履歴テーブルのレコード数をカウントする必要がありますが、ロジックはより複雑で、メイン テーブルの値に依存します。
SELECT OpportunityGlobalCRMId,
(SELECT SUM(CASE WHEN curr.PartnerGlobalCRMID IS NULL THEN CASE WHEN
hist.IgnoreOpportunity != 0 THEN 1 ELSE 0 END ELSE CASE
WHEN curr.CustomerAccountID IS NULL THEN CASE WHEN hist.IgnoreOpportunity = 1 AND
hist.PartnerGlobalCRMID = curr.PartnerGlobalCRMID THEN 1 ELSE 0 END ELSE CASE WHEN
hist.IgnoreOpportunity = 1 AND CONVERT(varchar, hist.CustomerAccountID) +
hist.PartnerGlobalCRMID = CONVERT(varchar, curr.CustomerAccountID) +
curr.PartnerGlobalCRMID AND hist.OpptyIncentiveCreatedDate =
curr.OpptyIncentiveCreatedDate THEN 1 ELSE 0 END END END) AS Expr1 FROM
dbo.tblOptyRecordsHistorical AS hist WHERE (OpportunityGlobalCRMId =
curr.OpportunityGlobalCRMId)) AS prevIgnored
FROM dbo.tblOptyRecordsCurrent AS curr
initial 以外のフラグとフィールドは省略しましたOpportunityGlobalCRMID
。これにより、次のエラーが発生します。Multiple columns are specified in an aggregated expression containing an outer reference. If an expression is being aggregated contains an outer reference, then that outer reference must be the only column referenced in the expression.