我有两张表lt_wmi_men_org_cs
和lt_wmi_men_venue_cs
。
我想要做的是在场地表中计算存在多少行(对于给定的季节和类型)然后乘以sessions字段并直接更新到org表(或将临时变量用于更新组织字段)。
这很有效。
declare @sum_wksp int = (select count(e.id_key)
from LT_WMI_MEN_VENUE_CS e
join lt_wmi_men_org_cs f on e.organization = f.customer_no
where e.season = f.season
and e.[type] = 1)
然而,当我添加会话的乘法时,它不起作用。
declare @sum_wksp int = (select (count(e.id_key) * e.sessions) as 'val'
from LT_WMI_MEN_VENUE_CS e
join lt_wmi_men_org_cs f on e.organization = f.customer_no
where e.season = f.season
and e.[type] = 1
and f.id_key = @id_key)
我的数据看起来像这样
venue
表
season type sessions organization
2016 1 4 46
2015 2 2 51
2011 1 3 21
2015 2 5 73
2016 1 2 46
orgs
表
season sum_type customer_no
2016 NULL 46
2015 NULL 21
2011 NULL 73
2015 NULL 51
2016 NULL 29
因此,如果季节为@sum_wksp
并且总共等于= 6,则2016 (1 * 4) + (1 * 2)
应该是底线。
这是一个两部分问题 - 如何修复查询以使其正常工作?
是否有更有效的更新方式
有没有办法直接更新lt_wmi_men_org_cs
而不使用临时变量?
说
update lt_wmi_men_org_cs
set wksp_sum = <query>
而不是
update lt_wmi_men_org_cs
set wksp_sum = @sum_wksp