我有一个大型存储过程,用于返回具有许多选择的对话框的结果。如果特定位列设置为 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 命令的不同排列,但没有运气。通常,我会使用表值函数,但我无法让它与这个场景一起工作。
这对我来说是一个障碍。有任何想法吗?