2013-03-26 127 views
0

我是一個SQL新手,被拋入這個很少的培訓,所以非常簡單的答案表示讚賞!我試圖拉取參與者分配的查詢,但我需要將每個樂趣的所有分配彙總在一起。目前,我有以下幾點:試圖總結分配百分比

select external_plan, 
    participant_tax_id, 
    external_vehicle, 
sum (decimal(alloc_rate,15,2)), 
    money_type 
from trc.vst_partalloc 
where external_plan='RF00580' 
and money_type='101' 
group by alloc_rate, 
    external_plan, 
    participant_tax_id, 
    external_vehicle, 
    money_type 

這將返回下面的例子:

EXTERNAL_PLAN PARTICIPANT_TAX_ID EXTERNAL_VEHICLE Alloc_Rate MONEY_TYPE 

RF00580     ######### DFCEX    0.03 101 
RF00580     ######### ACRNX    0.06 101 
RF00580     ######### STSVX    0.06 101 
RF00580     ######### VISGX    0.06 101 
RF00580     ######### VMVIX    0.06 101 
RF00580     ######### RERGX    0.09 101 
RF00580     ######### DODGX    0.12 101 
RF00580     ######### DRLCX    0.12 101 
RF00580     ######### ABNAK    0.20 101 
RF00580     ######### PTTRX    0.20 101 

所以#########代表在這些行一個參與者的ALLOC率加起來是100,我需要的是有一行返回不顯示external_vehicle但總結alloc_rate爲100 - 這是否有意義?任何幫助表示感謝,提前致謝!

+0

對不起,我應該校對這個我提交之前,arrghh - 我的意思是,我需要加在一起基金IDS所有撥款等於100% – 2013-03-26 19:20:07

+0

目前尚不清楚究竟什麼樣的數據組合加起來達到100,或者如何,請詳細解釋一下:) – 2013-03-26 19:41:57

+0

輸入數據行中的這個「allocation_rate」究竟代表什麼?你是否試圖報告每個結果行所代表的組的比例,以便給定的external_plan的所有結果行將合計爲100%? – WarrenT 2013-03-26 19:53:45

回答

0

它看起來像所有你需要做的是從select和group by子句中刪除External_vehicle。

0

簡單的答案是從group by刪除external_vehicle AMD alloc_rate

select external_plan, participant_tax_id, 
     sum (decimal(alloc_rate,15,2)), 
     money_type 
from trc.vst_partalloc 
where external_plan='RF00580' and money_type='101' 
group by external_plan, participant_tax_id, money_type 

一些評論:

(1)你並不需要在這兩個where條款external_plan和money_type和條款group by。如果要限制他們的單個值,可以使用查詢:

select participant_tax_id, 
     sum (decimal(alloc_rate,15,2)) 
from trc.vst_partalloc 
where external_plan='RF00580' and money_type='101' 
group by participant_tax_id 

(2)假設alloc_rate是數字類型,你正在做的輸出目的的轉換。你應該做的轉換後的總和:

select external_plan, participant_tax_id, 
     decimal(sum (alloc_rate),15,2), 
     money_type 
from trc.vst_partalloc 
where external_plan='RF00580' and money_type='101' 
group by external_plan, participant_tax_id, money_type 
+0

她說她只想要一種計劃和一種金錢類型嗎?我們不知道她的底層數據庫系統。我不知道你的主要系統是什麼,但是在我的分組中,SELECT不能顯示不屬於GROUP BY子句的非聚合列,所以你的第二個查詢(1)將不被允許。 – WarrenT 2013-03-26 21:59:00

+0

@WarrenT。 。 。該問題中的示例查詢選擇一個計劃和一個貨幣類型。對我來說似乎很清楚。並且,感謝您指出第二個查詢中的錯誤。我刪除了我無意中遺留的'money_type'列。 – 2013-03-26 22:02:24

+0

是的,就是這樣的例子。但僅僅因爲在這個例子中只有一個,我不確定我們是否可以假設在真實文件中可能沒有其他情況未顯示。爲了簡潔,經常修剪一個例子。只是在說 ;-) – WarrenT 2013-03-26 22:07:20