带有聚合组件的sql联合

带有聚合组件的sql联合,sql,sql-server,reporting-services,Sql,Sql Server,Reporting Services,我有一个查询,用于reporting services中的图表绘制,它类似于: (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 Epsil

我有一个查询,用于reporting services中的图表绘制,它类似于:

(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))
(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)

Alpha到θ将被用于在一对计算字段中,这些字段将Alpha、Beta、Gamma连接成一个字段中的字符串。OmiCon的SELECT语句将生成与席席相同的行数,但我真正想要的是聚合Omicron,因此,如果用Xi选择SELECT产生9个传奇项目,OmiCon的聚合选择只产生一个传奇项目,因为通过θ的alpha值对于OmiCon来说并不重要。该如何构造查询,以便我可以使用Alpha到Theta作为参数,但仍然可以聚合Omicron

我不确定您真正想要什么,但如果我理解正确,您可以尝试以下方法:

(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))
(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)

空,只需执行联合,保持列的数量,就可能需要做列别名< /p> 为什么不在一个SELECT语句中选择所有希腊人、席和OmiCon,并计算宿主语言中的和?这是一个可能代价高昂的查询,而不是两个。

我想我不明白你的答案。原始数据是直接选择的,这是在报表中使用之前在reporting services中准备数据。那么您的sql是什么样子的呢?