我有一些复杂的查询....我需要对两个联合编写的SQL查询的总和做一个更新语句(问题是查询中的数据不是数字,所以我&#39 ; m计数行而不是求和值)但我需要对这些行求和。
library(data.table)
setDT(df2)
j1 <- which(sapply(df1, function(x) all(is.na(x))))
for(j in j1){
set(df2, i = NULL, j = j, value = NA)
}
第一个查询数据就这样回来了
UPDATE #LT_Actuals_TEMP
SET pCount = h.countPerfs
FROM (
select count(distinct c.perf_description) as countPerfs, b.program, b.Prog_id
from #LT_Actuals_TEMP TableP
where a.Performances = 'Y' and a.current_inactive = 0
group by b.Program, b.Prog_id
union
select distinct count(p.perf_code) as countPerfs, x.value, b.Prog_id
from T_PERF p
where x.content_type = 23
group by x.value, b.Prog_id
) h where h.Prog_id = #LT_Actuals_TEMP.program_id
,第二个查询返回
countPerfs program Prog_id
7 Name 31
我需要countPerfs program Prog_id
1 Name 31
在一天结束时设置为8
预期结果
当我做pCount
我看到了价值
8为节目名称,Id 31
答案 0 :(得分:1)
您可以通过在from部分中添加另一个级别来解决它,在该部分中总结从union返回的数据。
你的查询似乎缺少一些源表(因为使用的别名没有指向任何东西)所以我猜你删除了一些部分,但一般来说它应该是这样的:
UPDATE #LT_Actuals_TEMP
SET pCount = h.sum_of_countperfs
FROM (
select program, prog_id, sum(countPerfs) as sum_of_countperfs
from (
select count(distinct c.perf_description) as countPerfs, b.program, b.Prog_id
from #LT_Actuals_TEMP TableP
where a.Performances = 'Y' and a.current_inactive = 0
group by b.Program, b.Prog_id
union all
select distinct count(p.perf_code) as countPerfs, x.value, b.Prog_id
from T_PERF p
where x.content_type = 23
group by x.value, b.Prog_id
) as sub_q group by program, prog_id
) h where h.Prog_id = #LT_Actuals_TEMP.program_id
此外,您可能希望使用union all
,以便不删除重复项。