У меня есть большая хранимая процедура, которая используется для возврата результатов для диалога со многими выборами. У меня есть новые критерии для получения «лишних» строк, если для определенного столбца бит установлено значение true. Текущая настройка выглядит следующим образом:Извлеките дополнительные строки, если бит бит равен 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
таблица Проекты имеет несколько столбцы, AllowIndirectCustomers, который говорит мне, что этот проект может использовать дополнительным клиентов, когда значение истинно. Насколько я могу судить, большинство различных SQL-конструкций предназначены для добавления дополнительных столбцов в набор результатов. Я пробовал разные перестановки команды UNION, не повезло. Обычно я обращался к табличной функции, но мне не удалось заставить ее работать с этим scenerio.
Этот был для меня наворотом. Есть идеи?
Как определить, если клиент должен быть включен? И когда вы позволяете косвенно, а когда нет. – zimdanen
Вышеупомянутый запрос предназначен для непосредственных присвоений конкретному сотруднику. Этот используется независимо от флага бит. В основном косвенные - это клиенты, которые назначаются сотруднику, имеют один и тот же продукт, но находятся в другом проекте. –
Проверьте ниже и дайте мне знать, если это сработает для вас. – zimdanen