У меня проблема с разработкой представления для использования. Это представление является соединением между тремя таблицами - однако не каждая строка будет иметь значение из всех трех таблиц - следовательно, LEFT JOIN. Ниже приведен код:
SELECT
dbs.ID,
dbs.OrderID,
dbs.SystemID,
dbs.SalesOrderNo,
dbs.[LineNo],
dbs.OrderQty,
dbs.ProductionOrder,
dbs.Workstation,
ref.Material,
ref.MaterialDescription,
dbs.Date,
dbs.Status,
dbs.Operator,
dbs.StartTime,
dbs.EndTime,
dbs.TotalTime,
SUM(del.DelayTime) AS DelTime,
ref.BuildTime AS CycleTime,
dbs.TotalTime - SUM(del.DelayTime) AS BuildTime
FROM
[Booms DBS] AS dbs
LEFT JOIN
[Booms Delay Entry] AS del
ON dbs.ID = del.ID
LEFT JOIN
[Booms Reference Master] AS ref
ON dbs.SystemID = ref.SystemID AND dbs.Workstation = ref.Workstation
GROUP BY
dbs.ID,
dbs.OrderID,
dbs.SystemID,
dbs.SalesOrderNo,
dbs.[LineNo],
dbs.OrderQty,
dbs.ProductionOrder,
dbs.Workstation,
ref.Material,
ref.MaterialDescription,
dbs.Date,
dbs.Status,
dbs.Operator,
dbs.StartTime,
dbs.EndTime,
dbs.TotalTime,
ref.BuildTime
В строках 18 и 20 есть агрегации, основанные на значениях «DelayTime» из таблицы задержек. Однако не каждая запись связана с задержкой. «BuildTime» рассчитывается на основе значений «TotalTime» и «DelayTime».
Однако, похоже, что столбец «DelTime» (сумма DelayTime) равен NULL (AKA, никакой задержки не связано ), "BuildTime" не будет заполняться. Могу ли я добавить какое-нибудь условное условие, которое гласит, что когда DelTime равен NULL, просто заполните BuildTime на основе TotalTime?