多くの選択肢を持つダイアログの結果を返すために使用される大きなストアド プロシージャがあります。特定のビット列が true に設定されている場合に「余分な」行を取得する新しい基準があります。現在のセットアップは次のようになります。
SELECT
CustomerID,
FirstName,
LastName,
...
FROM HumongousQuery hq
LEFT JOIN (
-- New Query Text
) newSubQuery nsq ON hq.CustomerID = nsq.CustomerID
新しいクエリの前半があります。
SELECT DISTINCT
c.CustomerID,
pp.ProjectID,
ep.ProductID
FROM Customers c
JOIN Evaluations e (NOLOCK)
ON c.CustomerID = e.CustomerID
JOIN EvaluationProducts ep (NOLOCK)
ON e.EvaluationID = ep.EvaluationID
JOIN ProjectProducts pp (NOLOCK)
ON ep.ProductID = pp.ProductID
JOIN Projects p
ON pp.ProjectID = p.ProjectID
WHERE
c.EmployeeID = @EmployeeID
AND e.CurrentStepID = 5
AND p.IsComplete = 0
Projects テーブルにはビット列 AllowIndirectCustomers があり、値が true の場合、このプロジェクトが追加の顧客を使用できることを示しています。私が知る限り、さまざまな SQL 構造の大部分は、結果セットに列を追加することを目的としています。UNION コマンドのさまざまな順列を試しましたが、うまくいきませんでした。通常、私はテーブル値関数に目を向けますが、このシナリオでは機能させることができませんでした。
これは私にとってスタンパーでした。何か案は?