2008-10-20 123 views
0

我有我使用的報告服務圖表的查詢,看起來像:與聚合組件SQL UNION

 
(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,Beta,Gamma)轉換成一個字段的字符串。 Omicron的select語句會生成與Xi相同的行數,但我真正想要的是聚合Omicron,因此如果使用Xi選擇查詢會生成9個圖例項目,則Omicron的聚合選擇應該只生成一個圖例項目,因爲值Alpha通過Theta對於Omicron不重要。查詢的結構應如何構建,以便我可以通過Theta使用Alpha作爲參數,但是仍然會聚合Omicron?

回答

1

我不知道你真正想要的,但如果我理解正確的話,你可以嘗試這樣的:

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

空值只是爲了能夠執行工會(保持列的金額,你可能需要做列混疊)

0

爲什麼不直接在一個select語句中選擇希臘語和Omicron的所有希臘語,並使用宿主語言計算總和?這是一個潛在的昂貴的查詢,而不是兩個。

+0

我不認爲我理解你的答案。原始數據是直接選擇的,並且在報告中使用它之前,這是在報告服務中準備數據。你的sql看起來像什麼? – TheObserver 2008-10-20 09:40:11