繁体   English   中英

与聚合组件的SQL联合

[英]sql union with an aggregation component

我有一个查询,用于在报表服务中进行图表绘制,如下所示:

(SELECT Alpha, Beta, Gamma, Delta, Epsilon, Zeta, Eta, Theta, Iota, Kappa, Lambda, Mu,Nu, Xi from tbl 
WHERE    
Alpha in (@Alphas) and 
Beta in (@Betas) and
Gamma in (@Gammas)  and
Delta in (@Deltas) and
Epsilon in (@Epsilons) and
Zeta in (@Zetas) and
Eta in (@Etas) and
Theta in (@Thetas) )
UNION 
(SELECT Alpha, Beta, Gamma, Delta, Epsilon, Zeta, Eta, Theta, Iota, Kappa, Lambda, Mu,Nu, Omicron from tbl 
WHERE    
Alpha in (@Alphas) and 
Beta in (@Betas) and
Gamma in (@Gammas)  and
Delta in (@Deltas) and
Epsilon in (@Epsilons) and
Zeta in (@Zetas) and
Eta in (@Etas) and
Theta in (@Thetas))

Alpha至Theta将用于两个计算字段中,这些字段将它们(例如Alpha,Beta,Gamma)连接到一个字段中的字符串中。 Omicron的select语句将生成与Xi相同的行数,但我真正想要的是聚合Omicron,因此,如果使用Xi的Select查询生成9个图例项,则Omicron的聚合select应该只生成一个图例项,因为值Alpha至Theta对Omicron而言并不重要。 如何构造查询,以便我可以通过Theta使用Alpha作为参数,但仍可以聚合Omicron?

我不确定您真正想要的是什么,但是如果我理解正确,则可以尝试以下操作:

(SELECT a,b,c,d FROM k
WHERE a in (@a) and b in (@b) and c in (@c))
UNION
(SELECT NULL,NULL,NULL,sum(e) FROM k
WHERE a in (@a) and b in (@b) and c in (@c) GROUP BY e)

仅仅为了能够执行并集就为NULL(保持列的数量,您可能必须做列别名)

您为什么不只在一个select语句中选择所有希腊语,Xi和Omicron并以宿主语言计算总和? 那是一个潜在的昂贵查询,而不是两个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM