【发布时间】:2022-01-12 14:50:37
【问题描述】:
我有一个带有连接的查询,可以直接执行它(所以没有“创建视图”部分)。对于某些行,我从子查询 T3 中获得了平均持续时间。但是,当我使用完全相同的查询构建视图并从该视图中选择所有行时,连接不起作用。我在有值的地方得到 NULL 作为 averageDuration,直接执行查询。这怎么可能?
代码使用视图。每个以“V_”开头的表名实际上都是一个视图。
为了让这个脚本作为视图工作,我需要将子查询 T3 中与 V_Operationroom 的连接更改为普通表而不是视图。这个解决方案的奇怪之处在于表或视图 (V_)Operationroom 中使用的字段(Operationroom_Skey 和 IndOperationroom)在表和视图中具有相同的数据类型。视图实际上从表中获取它们 (SELECT Operationroom_Skey, IndOperationroom FROM Operationroom)。
CREATE VIEW [dbo].[V_WaitingList]
AS
SELECT T1.Operationnumber, T3.AverageDuration
FROM V_Operation T1
LEFT JOIN V_Operationcode T2 ON T1.Operationcode_Skey = T2.Operationcode_Skey
LEFT JOIN (
SELECT
S5.Operationcode,
AVG(S1.duration) AS AverageDuration
FROM V_F_Operatie S1
LEFT JOIN V_Operation S2 ON S1.Operation_SKey = S2.Operation_SKey
LEFT JOIN V_Operationroom S3 ON S1.Operationroom_Skey = S3.Operationroom_Skey
LEFT JOIN V_Operationcode S5 ON S2.Operationcode_Skey = S5.Operationcode_Skey
WHERE
S5.Operationcode IS NOT NULL AND
S3.IndOperationroom = '1'
GROUP BY
S5.Operatieverrichtingcode
) T3 ON T3.Operationcode = T2.Operationcode
GO
【问题讨论】: