一对多连接,如果 "Many" table 列中的任何值 = 1,则在 "One" table = '1' 中设置一个标志,其中 One.ID = Many.ID
One to Many join, if any values in the "Many" table column = 1 then set a flag in the "One" table = '1' where One.ID = Many.ID
我有2张桌子。 "One Table" 具有不同的唯一 LoadID 和 true/false 标志(1 或 0)。 "Many Table" 有多个项目,这些项目属于一个负载。此外,每个 Item 都有一个 true 或 false 标志。
我需要做一个 select,如果 "Many Table" 中的任何标志对于特定 LoadID 为真,那么我想 select 单个 LoadID 的标志为真在 "One table "
最终结果应该是每个 LoadID 有 1 个不同的记录
关于如何在繁重的事务场景中有效实现这一点的任何提示?
到目前为止我的查询和结果集
Select Distinct L.Hazmat AS L_Hazmat, "DM_Hazmat" =
CASE
WHEN L.Hazmat = 0 and I.Hazmat = 0 THEN 0
WHEN L.Hazmat = 0 and I.Hazmat = 1 THEN 1
ELSE L.Hazmat
END
FROM tblLoads L with (NOLOCK)
INNER JOIN tblLoadItems I with (NOLOCK) ON L.LoadGuid = I.LoadGuid
WHERE L.LoadGuid = 'EB09E71B-82F0-41DB-BCBC-03896EE04789'
L_Hazmat DM_Hazmat
0 0
0 1
我建议如下:
Select "L_Hazmat" = L.Hazmat,
"DM_Hazmat" =
CASE
WHEN EXISTS (
SELECT 1
FROM tblLoadItems I with (NOLOCK)
WHERE I.Hazmat = 1
AND L.LoadGuid = I.LoadGuid
)
THEN 1
ELSE 0
END
FROM tblLoads L with (NOLOCK)
这将 return 你 L.Hazmat
的值以及 1
如果 any 值 I.Hazmat
与同样的 LoadGuid
值是 1
。而且它不需要分组或 DISTINCT
,这可能会使其性能更好。
我有2张桌子。 "One Table" 具有不同的唯一 LoadID 和 true/false 标志(1 或 0)。 "Many Table" 有多个项目,这些项目属于一个负载。此外,每个 Item 都有一个 true 或 false 标志。
我需要做一个 select,如果 "Many Table" 中的任何标志对于特定 LoadID 为真,那么我想 select 单个 LoadID 的标志为真在 "One table "
最终结果应该是每个 LoadID 有 1 个不同的记录
关于如何在繁重的事务场景中有效实现这一点的任何提示?
到目前为止我的查询和结果集
Select Distinct L.Hazmat AS L_Hazmat, "DM_Hazmat" =
CASE
WHEN L.Hazmat = 0 and I.Hazmat = 0 THEN 0
WHEN L.Hazmat = 0 and I.Hazmat = 1 THEN 1
ELSE L.Hazmat
END
FROM tblLoads L with (NOLOCK)
INNER JOIN tblLoadItems I with (NOLOCK) ON L.LoadGuid = I.LoadGuid
WHERE L.LoadGuid = 'EB09E71B-82F0-41DB-BCBC-03896EE04789'
L_Hazmat DM_Hazmat 0 0 0 1
我建议如下:
Select "L_Hazmat" = L.Hazmat,
"DM_Hazmat" =
CASE
WHEN EXISTS (
SELECT 1
FROM tblLoadItems I with (NOLOCK)
WHERE I.Hazmat = 1
AND L.LoadGuid = I.LoadGuid
)
THEN 1
ELSE 0
END
FROM tblLoads L with (NOLOCK)
这将 return 你 L.Hazmat
的值以及 1
如果 any 值 I.Hazmat
与同样的 LoadGuid
值是 1
。而且它不需要分组或 DISTINCT
,这可能会使其性能更好。