[英]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.