簡體   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